0

私が開発しているサイト(WordPress 3.4.2を実行している)には、タグのリストが記載されたサイドバーがあります。

タグのリンクをクリックすると、ユーザーはtag.phpに移動します。このタグには、問題のタグに関連するすべての投稿を表示するカスタムクエリが含まれています。

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array( 'post_type' => array('blog','news'),          'tag'=>single_tag_title('', false), 'posts_per_page' => -1, 'caller_get_posts' => 1, 'paged'    => $paged));

この後に、各投稿の要約を吐き出すループが続きます。シングルワードタグ(例:「windows」)がクリックされた場合はすべて正常に機能しますが、マルチワードタグ(例:「オペレーティングシステム」)がクリックされた場合、クエリは投稿を検出しません。

WordPressタグは単一の単語になるように設計されていることを理解しています。また、すべての複数単語のタグをハイフンでつなぐことで問題を解決できることを知っています。

ただし、読みやすくするために、ハイフンなしのマルチワードタグを引き続き使用したいと思います。

4

1 に答える 1

0

あなたの助けに感謝しますDavid-最後に、Wordpressのモデレーター@alchymythからのヒントが私をこのより単純な解決策に導きました:

私はsingle_tag_titleを使用していて、タグスラッグを使用する必要がありました。一口サイズのステップでの修正は次のとおりです(tag.phpのすべての変更):

  1. 現在のタグの変数を設定します。

    $current_tag = single_tag_title("", false);
    
  2. query_postsの変更:

    'tag'=>single_tag_title('', false)
    

    に...

    'tag_slug__and'=>array($current_tag)
    

...したがって、完全なコードは次のとおりです。

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$current_tag = single_tag_title("", false);

query_posts(array( 'post_type' => array('blog', 'news'), 'tag_slug__and'=>array($current_tag), 'posts_per_page' => -1, 'caller_get_posts' => 1, 'paged' => $paged));

フォーラムの投稿は次のとおりです: http ://wordpress.org/support/topic/query_posts-does-not-return-results-for-multiple-word-tags?replies = 3#post-4018519

再度、感謝します。

于 2013-03-26T10:06:21.820 に答える