1

少し問題が発生しました。解決するにはあなたの助けが必要かもしれません。

カスタム分類を使用し、それに応じて投稿にタグを付ける Web サイトを構築しています。それで、「用語」でタグ付けされたすべての投稿を表示するhttp://example.com/custom-taxonomy/termのようなページがあります。

訪問者はhttp://example.com/custom-taxonomy/にアクセスして、そのカスタム分類法内で使用されているすべての用語のリストを閲覧できるはずです。一部の分類法には非常に多くの用語が含まれている可能性があるため、このリストも「ページ付け」する必要があります。

これをどのように処理すべきかについてのアイデアはありますか?

本当にありがとう!

4

2 に答える 2

2

ここで自分の質問に答えます。他の人に役立つかもしれません。

get_terms を使用して特定の分類法の用語を取得し、それらを反復処理して目的の方法で表示するカスタム ページ テンプレートを作成しました。

次に、メインのタクソノミー スラッグ (この場合はhttp://example.com/actors ) とまったく同じスラッグでページを作成したため、/actors/ に移動すると、インデックス ページとして機能する作成されたページが実際に表示されます。タクソノミー。http://couch.ro/actori/で効果を確認できます。

実際のコードでは、実際のタグに画像を表示するために Taxonomy Images プラグインも使用しているため、apply_filter() 関数を介して get_terms が実行されます。以下のテンプレートの完全なコードがあります。どんなフィードバックでも大歓迎です!

<?php
/*
Template Name: Taxonomy Index
*/
$slug_to_taxonomy=array('actori'=>'actor','regizori'=>'director');
$terms_per_page=get_option( 'c2c_custom_post_limits' );

if ($terms_per_page['archives_limit']==0)
{
    $terms_per_page=get_options('posts_per_page');
}
else
{
    $terms_per_page=$terms_per_page['archives_limit'];
}

$slug=$post->post_name;

if (!isset($slug_to_taxonomy[$slug]))
{
    header("Location: /");exit;
}
else
{
    $taxonomy=$slug_to_taxonomy[$slug];
}

$terms_page=get_query_var('paged');
if (empty($terms_page))
{
    $terms_page=1;
}

$terms=apply_filters( 'taxonomy-images-get-terms', '',array('having_images'=>false,'taxonomy'=>$taxonomy, 'term_args'=>array('offset'=>($terms_page-1)*$terms_per_page,'number'=>$terms_per_page)) );

if (empty($terms))
{
    header("Location: /");exit;
}

$processed_terms=array();
foreach ($terms as $term)
{
    if (!empty($term->image_id))
    {
        $image_src=wp_get_attachment_image_src($term->image_id,'archive-thumbnail');
        $image_src=$image_src[0];
    }
    else
    {
        $image_src='http://couch.ro/wp-content/uploads/couchie_75.png';
    }

    $term_posts=get_posts(array('posts_per_page'=>3,'tax_query'=>array(array('taxonomy'=>$taxonomy,'field'=>'slug','terms'=>$term->slug))));
    $actual_term_posts=array();
    foreach ($term_posts as $post)
    {
        $actual_term_posts[$post->post_title]=get_permalink($post->id);
    }

    $processed_terms[]=array(
        'name'=>$term->name,
        'description'=>$term->description,
        'url'=>get_term_link($term),
        'image'=>$image_src,
        'posts'=>$actual_term_posts,
        'count'=>$term->count
    );
}

$has_next_page=(isset($processed_terms[$terms_page]));

get_header();
?>
<div class="posts-wrap"> 
    <div class="archive-title_wrap"><h1 class="archive-title"><?php the_title(); ?></h1></div>
    <div id="post_list_wrap">
<?php
foreach ($processed_terms as $term)
{
    echo "<div class='post post-archive'>
        <a href='{$term['url']}' title='{$term['name']}'><img src='{$term['image']}' alt='{$term['name']}'></a>
        <div class='rating' style='text-align:right;'>{$term['count']} ".($term['count']==1?'review':'reviewuri')."</div>
        <h2 class='index-entry-title'>
            <a href='{$term['url']}' title='{$term['name']}'>{$term['name']}</a>
        </h2>
        <div class='archive-meta entry-meta-index'>
            <span>";
    $first_term_post=true;
    foreach ($term['posts'] as $title=>$link)
    {
        echo ($first_term_post?'':', ')."<a href='{$link}' title='{$title}'>{$title}</a>";
        $first_term_post=false;
    }
    echo "</span>
        </div>
    </div>";
}
?>
    </div>
<?php if ($terms_page>1 OR $has_next_page) { ?>
    <div class="navigation">
        <div class="nav-prev left"><?php if ($terms_page>1) echo "<a href='/{$slug}/".($terms_page>2?"page/".($terms_page-1)."/":'')."'>".__('&laquo; Previous Page', 'designcrumbs')."</a>"; ?></div>
        <div class="nav-next right"><?php if ($has_next_page) echo "<a href='/{$slug}/page/".($terms_page+1)."/'>".__('Next Page &raquo;', 'designcrumbs')."</a>" ?></div>
        <div class="clear"></div>
    </div>
<?php } ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
于 2013-11-03T12:07:19.240 に答える
0

query_postsこのような機能を使用できます

$termname = get_query_var('pagename'); //custom-taxonomy term
    query_posts(array(
        'post_type' => POST_TYPE,
        'showposts' => $limit,
        'custom-taxonomy' => $termname // use $term1.','.$term2.','.$term3 to get multiple terms posts
    ));

Wordpress のドキュメントを参照してください

カスタム分類の下にあるすべての用語を取得するには、これを試してください。完全に制御できます。

global $wpdb;
        $taxonomy = CUSTOM_CAT_TYPE;
        $table_prefix = $wpdb->prefix;
        $wpcat_id = NULL;
        //Fetch category or Term as said                         
        $wpcategories = (array) $wpdb->get_results("
                SELECT * FROM {$table_prefix}terms, {$table_prefix}term_taxonomy
                WHERE {$table_prefix}terms.term_id = {$table_prefix}term_taxonomy.term_id
                AND {$table_prefix}term_taxonomy.taxonomy ='" . $taxonomy . "' and  {$table_prefix}term_taxonomy.parent=0  ORDER BY {$table_prefix}terms.name ASC");

        $wpcategories = array_values($wpcategories);
foreach ($wpcategories as $wpcat) {

                $termid = $wpcat->term_id;
                $name = $wpcat->name;
                $termprice = $wpcat->term_price;
                $tparent = $wpcat->parent;  
}
于 2013-10-31T11:42:49.173 に答える