私が開発中の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つを利用可能にしましたアーカイブ 。
正しい方向へのヒントやナッジは有り難いです!
ありがとう
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>';
}