web-dev-qa-db-ja.com

カスタマイズしたページ内でカテゴリ別にフィルタを設定する方法

私はまだWordPress開発の素晴らしい世界にかなり新しいです、そして質問で助けを望んでいました..

特定のカテゴリの下にあるすべての投稿を抽出し、それらを定義された順序で表示する簡単なページテンプレートを用意しました。結構ですが、フィルタを追加して、ユーザーがリストから子カテゴリを選択できるようにすると、子カテゴリの投稿が表示されてページが更新されます。

コーデックスはwp_dropdown_category()関数を含む提案をしています、しかしそれからの行動は私が望まないカテゴリアーカイブにあなたを連れて行きます。ユーザーをページ内に留める必要があります。

私が使う :

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array (
    'cat'            => 1,
    'posts_per_page' => 10,
    'paged'          => $paged
);
$query = new WP_Query( $args );

元の選択のためであり、'cat' =>をリ​​ストから選択された出力に変更することを念頭に置いていましたが、それを正しくすることはできません。

どうぞよろしくお願いいたします。

1
Philip

wp_dropdown_categories() functionは選択ボックスを出力する。フォームアクションを使用してフォーム内の出力を同じページにラップし、ユーザーがフォームを送信すると、カテゴリID値を取得してそのカテゴリ内の投稿をクエリできます。あるいはjQueryを使用して、フォームをまったく必要としないようにすることもできます。

コーデックスはどちらの場合もいい例を持っています。

現在のページにフォームを投稿したい場合は、このようなフォームアクションとしてそのページのURLを使用できます。

<li id="categories">
<h2><?php _e( 'Categories:' ); ?></h2>
<form id="category-select" class="category-select" action="<?php echo get_permalink($page_id); ?>" method="get">
<!-- $page_id is the current page id -->
    <?php wp_dropdown_categories( 'show_count=1&hierarchical=1&name=category_select' ); ?>
    <input type="submit" name="submit" value="view" />
</form>
</li>

あなたはこのような戻り値を使うことができます

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$cat = ( isset( $_GET['category_select'] ) ) ? $_GET['category_select'] : 1;
$args = array (
    'cat'            => $cat,
    'posts_per_page' => 10,
    'paged'          => $paged
);
$query = new WP_Query( $args );
0
sakibmoon