webentwicklung-frage-antwort-db.com.de

Wie zeige ich Taxonomie-Meta auf der Startseite?

Bei einer Website, die ich entwickle, bin ich auf die folgende Herausforderung gestoßen.

Ich habe ein benutzerdefiniertes Taxonomie- "Blog" erstellt (das sowohl dem Post-post_type als auch dem User-object_type zugeordnet ist). Mit dem Taxonomie-Meta-Plugin habe ich ein Metafeld hinzugefügt. Auf der Taxonomiearchivseite gebe ich den Taxonomiebegriff, die Beschreibung und dieses Bild aus.

Auf der front_page dieser Seite möchte ich alle Blogs auflisten und ich möchte das so machen, dass es wieder dieses Taxonomie-Metabild zeigt.

Ich habe es bereits geschafft, die Blogs mit Titel (Link) und Beschreibung anhand des letzten Beispiels auf dem Codex-Eintrag anzuzeigen:

/* 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>';
}

Der Code, mit dem ich das Bild im Taxonomie-Archiv des Blogs angezeigt habe, stammt direkt von der Rilwis-Website (ganz unten):

$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>';

Die Schwierigkeit, dies auch auf der Homepage zu tun, besteht darin, dass ich anscheinend zwei Foreach-Aufrufe kombinieren muss, und das ist für mich ein bisschen zu komplexes Gebiet.

Für alle, die sich eine Visualisierung wünschen, habe ich auf meinem Staging-Server die Homepage und eines der Blogs zur Verfügung gestellt Archive .

Alle Tipps und/oder Stupser in die richtige Richtung sind willkommen!

Vielen Dank

1
user2015

Drüben bei Google+ habe ich die gleiche Frage gepostet und Dank geht an Alexander Conroy , um die richtige Lösung zu codieren:

/* 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