web-dev-qa-db-ja.com

現在の投稿の期スラッグを取得

私は、同じ用語からのすべての投稿へのリンクを含むナビゲーションメニューを表示する単一の投稿タイプのテンプレートを作成しています。

今、私はすべての異なる用語に対してこのテンプレートを使いたいので、$ term_slugは現在の投稿のスラッグという用語を他の投稿に対応させるために保持する必要があります。

私はインターネット上でこのコードを実行することを何度も見つけましたが、それは私にはうまくいきません。

$terms = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$term_slug = $term->slug;

この記事はこれが仕事をするだろうと言う: http://www.wpbeginner.com/wp-themes/how-to-show-the-current-taxonomy-title-url-and-more-in-wordpress/

何がおかしいのですか?

$args = array(
    'post_type'     => 'myposttype',
    'mytaxonomy'    => $term_slug,
    'order'         => 'ASC'
);              

$current_id = get_the_ID();
$the_query = new WP_Query( $args );
if($the_query->have_posts() ) {
    while ($the_query->have_posts()) { $the_query->the_post();

        echo '<li><a' . ($current_id == $post->ID ? ' class="current"' : '') . ' href=" ' . get_permalink() . ' ">' . get_the_title() . '</a></li>'; 

    } 
}
3
Robbert

あなたのコードは、一つの記事ではなく、用語が検索されるページ(分類用語アーカイブ)上で動作します。

単一の投稿の場合は、その投稿に属する用語を取得する必要があります。

$terms = get_the_terms( $post->ID, 'your-taxonomy' );
if ( !empty( $terms ) ){
    // get the first term
    $term = array_shift( $terms );
    echo $term->slug;
}
15
Milo

以下のコードは、複数の用語を表示する場合にうまく機能します。

echo get_the_term_list( 
    $post->ID, 
    'styles', 
    '<ul class="styles"><li>', 
    ',</li><li>', 
    '</li></ul>' 
); 
0
Sanj2cool