web-dev-qa-db-ja.com

カスタム投稿タイプ分類フィルター

私は本当にこの機能をまとめるのに本当に苦労していて、誰かが私をそこに連れて行くために手助けをするか、スニペットを提供することができることを望みます。

だから私はストーリーが公開されているWebサイト上にセクションを作成しています。ストーリーセクションのカスタム投稿タイプとストーリータイプ(カテゴリ)とストーリータグ(タグ)の分類法を作成しました。その点ですべてがうまく機能し、正しく表示されています。

セットアップの詳細があります。

  • カスタム投稿タイプ:ストーリー
  • カスタム分類法(カテゴリ):ストーリータイプ
  • カスタム分類法(タグ):story-tags

ランディングページの投稿を4倍のオプションでフィルタリングできるようにする必要があります。

  • ストーリータイプ分類法(章または抜粋、特集、フラッシュフィクション、マイクロフィクション、詩、短編)
  • ストーリータグ分類法(デビュー、おかしな、実話)
  • 月別(月、月、月、など)
  • 並び替え(最新、最新)

例:6月にfunnyとタグ付けされたすべてのフィクションストーリーを見せて、読んだ順に並べ替えてください。

結果が正確である限り、結果が表示される場所にうるさいわけではありません。

結果ページは「Your Results」というタイトルになります。

今までの時間をありがとう.

1
Roy Barber

私はコーデックスのこのページを見てみましょう:

http://codex.wordpress.org/Class_Reference/WP_Query

ランディングページ用にquery_posts()をオーバーライドし、フォームのどの領域に記入したかに応じて、if()ステートメントでさまざまなクエリを制御する必要があると思います。

// Carry pagination through
$args = array(
  'paged' => ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1
);

// Check if 'story-type' was searched for
if ( !empty( $_POST['story_type'] ) )
  $args['story-type'] = $_POST['story_type'];

// Check if 'story-tags' was searched for
if ( !empty( $_POST['story_tags'] ) )
  $args['story-tags'] = $_POST['story_tags'];

// Check if a year was selected
if ( !empty( $_POST['date_year'] ) )
  $args['year'] = $_POST['date_year'];

// Check if a month was selected
if ( !empty( $_POST['date_month'] ) )
  $args['month'] = $_POST['date_month'];

// Override $wp_query
query_posts( $args );

ソートも同じ方法で行われます - 'order'と 'orderby'をチェックしてください。

1
Mike F

あなたはおそらくこの答えを無視したいでしょう。質問を完全に間違って読んでいます。

WP_Query内にtax_queryが必要になります。 CodexのWP_Queryドキュメントの 分類パラメーター セクションの下に例があります。

複数の分類法を検索する例(Codexから取得):

$args = array(
'post_type' => 'post',
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'movie_genre',
        'field' => 'slug',
        'terms' => array( 'action', 'comedy' )
    ),
    array(
        'taxonomy' => 'actor',
        'field' => 'id',
        'terms' => array( 103, 115, 206 ),
        'operator' => 'NOT IN'
    )
)
); 
$query = new WP_Query( $args );
0
Craig Burgess