Pour un site Web que je développe, je suis tombé sur le défi suivant.
J'ai créé une taxonomie personnalisée "blog" (associée à la fois à Post-post_type et à User-object_type). Avec le plugin de méta taxonomie, j'ai ajouté une image de méta-champ. Sur la page d’archive de la taxonomie, j’envoie le nom de la taxonomie, sa description et cette image.
Sur la page d'accueil de ce site, je souhaite répertorier tous les blogs et je souhaite le faire de manière à ce que cette méta-image de taxonomie s'affiche à nouveau.
J'ai déjà réussi à afficher les blogs avec titre (lien) et description, en utilisant le dernier exemple sur l'entrée Codex :
/* List all blogs, source example 2: http://codex.wordpress.org/Function_Reference/get_terms#Examples */
$args = array( 'taxonomy' => 'blog', 'orderby' => 'name', 'order' => 'ASC', 'fields' => 'all' );
$terms = get_terms('blog', $args);
$count = count($terms); $i=0;
if ($count > 0) {
foreach ($terms as $term) {
$i++;
$term_list .= '<article class="blog-list"><p><a href="' . get_home_url() . '/blog/' . $term->slug . '/" title="' . sprintf(__('View all articles in %s Blog', 'wys'), $term->name) . '">' . $term->name . '</a></p><p>' . $term->description . '</p>';
if ($count != $i) $term_list .= '</article>'; else $term_list .= '';
}
echo '<div class="my_term-archive">' . $term_list . '</div>';
}
Le code que j'ai utilisé pour afficher l'image sur les archives de taxonomie de blogs provient directement du site Web de de Rilwis (tout en bas):
$queried_object = get_queried_object();
$term_id = $queried_object->term_id;
$meta = get_option('blog_image'); //meta_id
if (empty($meta)) $meta = array();
if (!is_array($meta)) $meta = (array) $meta;
$meta = isset($meta[$term_id]) ? $meta[$term_id] : array(); //term_id
$images = $meta['blogimg']; //field_id
foreach ($images as $att) {
// get image's source based on size, can be 'thumbnail', 'medium', 'large', 'full' or registed post thumbnails sizes
$src = wp_get_attachment_image_src( $att, 'thumbnail' );
$src = $src[0];
// show image
echo '<figure class="thumb alignleft"><img src="' . $src . '" alt="image" /></figure>';
}
echo '<div class="archive-meta">';
$description = term_description();
if ( $description ) { // Show Blog taxonomy term description
echo $description;
} //endif
$meta = get_option('blog_image'); //meta_id
if (empty($meta)) $meta = array();
if (!is_array($meta)) $meta = (array) $meta;
$meta = isset($meta[$term_id]) ? $meta[$term_id] : array(); //term_id
$value = $meta['blog_authors']; //field_id
echo '<p class="blog-authors">' . __( 'Author(s): ', 'wys' ) . $value . '</p>'; // if you want to show
echo '</div>';
La difficulté à faire cela sur la page d'accueil aussi est qu'il me semble devoir combiner deux appels pour chaque appel, ce qui est un territoire un peu trop complexe pour moi.
Pour ceux qui veulent avoir une visualisation, j'ai mis à disposition sur mon serveur de transfert la page d'accueil et l'un des blogs. archives .
Tous les conseils et/ou coups de pouce dans la bonne direction sont appréciés!
Merci
Sur Google+, j'ai posté la même question et les crédits vont à Alexander Conroy pour coder la bonne solution:
/* List all blogs, source example 2: http://codex.wordpress.org/Function_Reference/get_terms#Examples
*
* credits Alexander Conroy - https://plus.google.com/u/0/113053085239726972447
*/
$terms = get_terms('blog', $args);
$blog_image_meta = get_option('blog_image');
if (!empty($terms)) {
foreach ($terms as $term) {
$meta = isset($blog_image_meta[$term->term_id]) ? $blog_image_meta[$term->term_id] : array(); //term_id
$image = array_shift(wp_get_attachment_image_src( array_shift($meta['blogimg']), 'thumbnail' ));
$term_list .= '<article class="blog-list"><figure class="thumb alignleft"><img src="' . $image . '" alt="image" /></figure><p><a href="' . get_home_url() . '/blog/' . $term->slug . '/" title="' . sprintf(__('View all articles in %s Blog', 'wys'), $term->name) . '">' . $term->name . '</a></p><p>' . $term->description . '</p></article>';
}
echo '<div class="my_term-archive">' . $term_list . '</div>';
}