web-dev-qa-db-ja.com

単項スラッグを取得

私は、さまざまな投稿タイプに対して共通の「単​​一タグページ」を作成しています。
次のコードを使っています:

$loop = new WP_Query( array( 'post_type' => 'any', 'tag' => single_term_title( '', false ), 'posts_per_page' => 10 ) );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
  <div class="entry-content">
     <?php the_excerpt(); ?>
  </div><!-- .entry-content -->
<?php endwhile; // End the loop. ?> 

分類学用語の衝突がなくなるまでうまくいきます。
例えば:
カテゴリ名とタグ名が - "動画" の場合、カテゴリにスラッグが付きます - "/ videos"&Tag "/ videos-2"

スラグが分類名と同じでない場合、上記のコードは機能しません。
single_term_title() の代わりの関数が必要です。 "single_term_slug()" のようなものです。

何か案は?

P.S私は " get_term_by() "関数について考えていましたが、私は上のコードにそれを採用することができませんでした。

更新: 私は自分のコードを以下に投稿しました。

2
Andrew

このような迅速な対応をありがとうございました。とても有難い!

これが「グローバル」タグページのコードです(デフォルトの 'post_tag'分類法の用語を表示しています)。

<?php
$term_slug = get_queried_object()->slug;
    if ( !$term_slug )
    return;
    else  
$loop = new WP_Query( array( 'post_type' => 'any', 'tag' => $term_slug, 'posts_per_page' => 10 ) );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
  <div class="entry-content">
    <?php the_excerpt(); ?>
  </div><!-- .entry-content -->
<?php endwhile; // End the loop. ?>  

そして次のコード例は、カスタム分類クエリ(カスタム分類の用語を表示する)です。

<?php 
//http://codex.wordpress.org/Function_Reference/WP_Query#Taxonomy_Parameters
$term_slug = get_queried_object()->slug;
        if ( !$term_slug )
        return;
        else
$args = array(
    'tax_query' => array(
                     array(
                       'taxonomy' => 'gallery_category',
                       'field' => 'slug',
                       'terms' => $term_slug,
                       'posts_per_page' => 10
                     )
                   )
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
  <div class="entry-content">
    <?php the_excerpt(); ?>
  </div><!-- .entry-content -->
<?php endwhile; // End the loop. ?> 
7
Andrew

$wp_queryにはオブジェクトという用語への参照があり、これをつかむためのショートカット関数(WordPress 3.1を実行している場合)はget_queried_object()です。

だから、スラッグを取得するにはecho get_queried_object()->slug;をします

WordPress 3.1を実行していない場合は、global $wp_queryget_queried_object()を呼び出す必要があります。

global $wp_query;echo $wp_query->get_queried_object()->slug;

2
Joe Hoyle

これは、 single_term_title()から分岐したsingle_term_slug()関数です。

function single_term_slug( $prefix = '', $display = true ) {
    $term = get_queried_object();
    if ( !$term )
    return;
    if ( is_category() )
        $term_slug = apply_filters( 'single_cat_slug', $term->slug );
    elseif ( is_tag() )
        $term_slug = apply_filters( 'single_tag_slug', $term->slug );
    elseif ( is_tax() )
        $term_slug = apply_filters( 'single_term_slug', $term->slug );
    else
        return;
    if ( empty( $term_slug ) )
        return;
    if ( $display )
        echo $prefix . $term_slug;
    else
        return $term_slug;
}
0
Bainternet