私はまだ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' =>
をリストから選択された出力に変更することを念頭に置いていましたが、それを正しくすることはできません。
どうぞよろしくお願いいたします。
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 );