Un utente ha chiesto informazioni su Related Posts by Taxonomy di Wordpress

Esempio di come utilizzare l’URL di una miniatura invece di un’immagine in miniatura?

Un utente ha chiesto 👇

Ciao! Provo a utilizzare il formato shortcut = “thumbnails”. Non ho miniature per i miei post, quindi non viene visualizzato nulla. Ho una chiave ACF per ogni post in cui memorizzo l’URL dell’immagine che voglio visualizzare per il post. C’è un modo per utilizzare un hook nel functions.php per recuperare ogni singola URL di immagine da un campo chiave ACF e visualizzarlo utilizzando il formato “miniatura”?

Apprezzeremmo qualsiasi aiuto.

Lanciatore di thread

(@stefanosn)

1 anno, 5 mesi fa

Ho provato il codice della funzione immagine di regressione ma non sembra mostrare nulla.

// Use a fallback image if a post has no post thumbnail.
add_filter( 'related_posts_by_taxonomy_post_thumbnail_link', 'rpbt_related_post_fallback_image', 10, 4 );
 
function rpbt_related_post_fallback_image( $image, $attr, $related, $args ) {
 
    if ( !empty( $image ) ) {
        // Post thumbnail found.
        return $image;
    }
 
    $image_args = array(
        'numberposts' => 1,
        'order' => 'ASC',
        'post_mime_type' => 'image',
        'post_parent' => $related->ID,
        'post_status' => null,
        'post_type' => 'attachment',
    );
 
    $attachments = get_children( $image_args );
 
    if ( !empty( $attachments ) ) {
        // Post attachment image found.
        $attachments = array_values( $attachments );
        $attachment_id = (int) $attachments[0]->ID;
 
        // Use the first attachment image.
        $image = wp_get_attachment_image( $attachment_id , $args['size'], false, $attr['describedby'] );
    } else {
        
        // * Use your own fallback image here.
        // *
        // * Example of an image uploaded with the media editor.
        // * Change the attachment ID (123) below to your uploaded fallback image ID.
        // * And remove the two foreward slashes at the beginning.
         
         
        $image = get_field("picture_url",$related->ID);
        //wp_get_attachment_image( 123, $args['size'], false, $attr['describedby'] );
    }
 
    $image = $image ? "<a><img src='{$image}' /></a>" : '';
 
    return $image;
}

Questa risposta è stata modificata 1 anno, 5 mesi fa. Autore del plugin

(@keesiemeijer)

1 anno, 5 mesi fa

Ciao stefanosn

Puoi provare il codice con la versione sviluppata di questo plugin. Dovrebbe funzionare con quella versione.

Potete scaricarlo qui
https://downloads.wordpress.org/plugin/related-posts-by-taxonomy.zip

Lanciatore di thread

(@stefanosn)

1 anno, 5 mesi fa

Ciao. Non capisco. Vuoi che installi questa versione dal link? E poi cosa provare esattamente? Il codice che ho provato è corretto?

Questa risposta è stata modificata 1 anno, 5 mesi fa. Autore del plugin

(@keesiemeijer)

1 anno, 5 mesi fa

Sì, installa prima la versione di sviluppo poiché c’è un bug nella versione corrente in cui non puoi usare le tue immagini. Questo verrà risolto nella prossima versione.

Puoi usare una meta query WordPress standard per i domini ACF?
https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters

In tal caso, puoi chiedere informazioni sui post correlati (solo) che hanno una chiave di campo URL personalizzata.

Oppure si desidera utilizzare immagini di backup per processi che non dispongono della chiave del campo ACF personalizzata?

Il codice seguente ottiene l’URL da un campo personalizzato my_url_key. Interruttore my_url_key (due volte) con la chiave del campo personalizzato nel codice. Mettilo nel file functions.php del tuo tema (figlio).


// Adds the 'Post Images' format to the widget
// after the plugin's defaults are set (priority 11).
add_action( 'wp_loaded', 'rpbt_add_post_images_format_widget', 11 );

function rpbt_add_post_images_format_widget() {

	if ( ! class_exists( 'Related_Posts_By_Taxonomy_Defaults' ) ) {
		return;
	}

	$defaults = Related_Posts_By_Taxonomy_Defaults::get_instance();

	// Add the new format.
	$defaults->formats['images'] = __( 'Post Images' );
}

// Sets the format to thumbnails if the Post Images format is used.
// Adds filters to remove the sql used to only find posts with post thumbnails.
add_filter( 'related_posts_by_taxonomy_shortcode_atts', 'rpbt_post_images_format' );
add_filter( 'related_posts_by_taxonomy_widget_args', 'rpbt_post_images_format' );

function rpbt_post_images_format( $args ) {
	// Check if the new images format is used.
	if ( 'images' === $args['format'] ) {

		// Set format to thumbnails if Post Images format is used.
		// Loads the gallery template file.
		$args['format'] = 'thumbnails';
	}

	return $args;
}

// Change the meta query for post thumbnails to a ACF custom field query.
add_filter( 'related_posts_by_taxonomy_posts_meta_query', 'rpbt_use_acf_image', 10, 4 );

function rpbt_use_acf_image( $meta_query, $post_id, $taxonomies, $args ) {

	// Reset meta query for post thumbnail and query for ACF key.
	$meta_query = array(
		array(
			'key'     => 'my_url_key',
			'compare' => 'EXISTS',
		),
	);

	return $meta_query;
}

// Use an ACF image.
add_filter( 'related_posts_by_taxonomy_post_thumbnail_link', 'rpbt_related_post_fallback_image', 10, 4 );

function rpbt_related_post_fallback_image( $image, $attr, $related, $args ) {

	$post_meta_url = get_post_meta( $related->ID, 'my_url_key', true );

	if ( ! empty( $post_meta_url ) ) {
		// Post meta url found.
		$image = "<img src='{$post_meta_url}' >";

		return "<a href='{$attr['permalink']}' title='{$attr['title_attr']}'>{$image}</a>";
	}

	return '';
}

btw:
prendi in considerazione la creazione di un tema figlio invece di modificare direttamente il tema: se aggiorni il tema, tutte le modifiche andranno perse. Oppure crea un plugin con il codice sopra.

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *