web-dev-qa-db-ja.com

フロントページにメタク分類法を表示するにはどうすればいいですか?

私が開発中のWebサイトでは、次のような課題に直面しました。

私はカスタム分類法 "blog"(Post-post_typeとUser-object_typeの両方に関連付けられています)を作成しました。分類法メタプラグインで、メタフィールド画像を追加しました。分類のアーカイブページで、分類の用語名、説明、およびこの画像を出力します。

このサイトのfront_pageで私はすべてのブログをリストしたいです、そしてそれが再びその分類学メタ画像を示すような方法でそれをしたいです。

私はすでにブログにタイトル(リンク)と説明を付けて表示しました。最後の例 のコーデックスエントリ を使用しています。

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

ブログ分類アーカイブに画像を表示するために使用したコードは、 RilwisのWebサイト から直接取得されます。

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

ホームページでもこれを行うのが難しいのは、私は2つのforeach呼び出しを結合しなければならないように思われるということです、そしてそれは私にとって少し複雑すぎる領域です。

視覚化したい人のために、私は私のステージングサーバー のホームページのブログの1つを利用可能にしましたアーカイブ

正しい方向へのヒントやナッジは有り難いです!

ありがとう

1
user2015

Google+で同じ質問を投稿し、正しい解決策をコード化してくれた Alexander Conroy にクレジットを渡します。

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