web-dev-qa-db-ja.com

ショートコードを使用してカスタム分類カテゴリを呼び出す方法

ここで解決した質問が1つあります。 カスタム分類内の単一カテゴリからの投稿を表示する方法

今、私はこのコードをどうやって使うのかと思っています:

<?php
    $args = array(
        'posts_per_page' => 1,
        'post_type' => 'inventory',
        'tax_query' => array(
            array(
                'taxonomy' => 'inventory-category',
                'field' => 'slug',
                'terms' => array( 
                    'bulk-racks' 
                )
            )
        )       
    );
query_posts( $args ); while ( have_posts() ): the_post();

// do stuff here
?>

<?php endwhile; ?>

これをショートコードで呼び出します。たとえば、これを使ってバルクラックカテゴリを表示するには[inventory-category = "bulk-racks"]

基本的なショートコードを作成する方法はわかっていますが、ショートコードのカテゴリ名の入力に基づいて投稿を返すような関数を書く方法がわかりません。

もう一度助けていただければ幸いです。

2
maikunari

アイデアを得るために カテゴリ投稿ショートコード を見てください。ここにあなたの投稿タイプと分類法を呼び出すための小さな変更を加えたプラグインです:

// Taxonomy category shortcode
function cat_func($atts) {
    extract(shortcode_atts(array(
            'class_name'    => 'cat-post',
            'totalposts'    => '-1',
            'category'      => '',
            'thumbnail'     => 'false',
            'excerpt'       => 'true',
            'orderby'       => 'post_date'
            ), $atts));

    $output = '<div class="'.$class_name.'">';
    global $post;
    $args = array(
        'posts_per_page' => $totalposts, 
        'orderby' => $orderby,
        'post_type' => 'inventory',
        'tax_query' => array(
            array(
                'taxonomy' => 'inventory-category',
                'field' => 'slug',
                'terms' => array( $category)
            )
        ));
    $myposts = NEW WP_Query($args);


    while($myposts->have_posts()) {
        $myposts->the_post();
        $output .= '<div class="cat-post-list">';
        if($thumbnail == 'true') {
        $output .= '<div class="cat-post-images">'.get_the_post_thumbnail($post->ID, 'thumbnail').'</div>';
        }
        $output .= '<div class="cat-content"><span class="cat-post-title"><a href="'.get_permalink().'">'.get_the_title().'</a></span>';
        if ($excerpt == 'true') {
            $output .= '<span class="cat-post-excerpt">'.get_the_excerpt().'</span>';
        }
        $output .= '</div>
            <div class="cat-clear"></div>
        </div>';
    };
    $output .= '</div>';
    wp_reset_query();
    return $output;
}
add_shortcode('inventory-category', 'cat_func');

用法

このショートコードをあなたの投稿やページに入れるだけです。

[inventory-category totalposts="3" category="bulk-racks" thumbnail="true" excerpt="true" ]
  • totalposts - 表示する投稿の総数。デフォルトは-1
  • カテゴリ - スラッグ。複数のナメクジの場合はコンマを使用
  • thumbnail - サムネイルを表示したい場合はtrueに設定します。デフォルトはfalseです
  • excerpt - excertpを表示したい場合はtrueに設定してください。デフォルトはtrueです
  • orderby - あなたの投稿はで注文します。デフォルトのpost_date。詳細については http://codex.wordpress.org/Template_Tags/get_posts を確認してください。
5
Bainternet