web-dev-qa-db-fra.com

Comment afficher la méta de taxonomie en première page?

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

1
user2015

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>';
}
1
user2015