何時間もこれをグーグル、解決策を見つけることができません。
私の テーマ あなたは私が働いているカスタム投稿タイプからすべてのビデオを引っ張るBrowse
ページを持っています。ユーザーが30のカテゴリを作成した場合、ユーザーが一番上に表示されている[カテゴリ]ボタンを使用して動画をソートできるようになります。 Horror
idをクリックすると、ループしてすべてのHorror
ビデオを表示します。
このループ内でカテゴリを使用して動画を並べ替えるにはどうすればよいですか。
ブラウズページ
私のカテゴリー
<ul class="sort-by-category">
<?
$args = array(
'orderby' => 'name',
'parent' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
echo '<li><a class="browse-categories" href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>';
}
?>
</ul>
<?
// Our variables
$numPosts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0;
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;
query_posts(array(
'posts_per_page' => $numPosts,
'paged' => $page,
'post_type' => 'theme_video'
));
// our loop
if (have_posts()) {
while (have_posts()){
the_post();
get_template_part( 'partials/content', 'browse' );
}
}
wp_reset_query();
?>
進め方がわからない。私が試したものは何もループをソートするようには思えません、そして私が使用した方法は1 - 2年で時代遅れになっています...
私の最初のテーマではサイトはうまく機能しますが、選択したカテゴリでこのループをソートする方法がわかりません。ヒントやポインタはありますか?
ありがとうございます。
クエリにorderby
パラメータがありますが、コンパニオンorder
がありません。これはソートに昇順/降順の規則を与えます。
ワードプレス コーデックス reference
質問を理解できませんが、投稿したquery_posts
を含むコードスニペットが、get_category_link ()
によって生成されたリンクを追跡するときに呼び出されるカテゴリ、アーカイブ、またはインデックステンプレートのいずれかであると想定しています。もしそうなら、query_posts
関数はデフォルトのループを無効にしています、しかしあなたはそれによってそのポストタイプのすべてのポストをつかんでいるのでフィルタするカテゴリを含んでいません。
// Our variables
$numPosts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0;
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;
// build query
$args = array(
'posts_per_page' => $numPosts,
'paged' => $page,
'post_type' => 'theme_video'
);
// get category ID
$cat_id = get_query_var( 'cat' );
// add category to query if an id is found
if ( $cat_id != '' ) {
$cat = get_category ( $cat_id );
$args['category'] = $cat->slug;
}
// go!
query_posts( $args );
pre_get_posts
関数とは対照的にquery_posts
フックの使用を検討することをお勧めしません。
編集: 答えが見つかりました。この問題を抱えている人のために投稿しています。あなたがこれを達成するより良い方法があるならば、他の人の利益のために以下に投稿してください。
このコードをあなたの category.phpに入れてください。 URLからカテゴリを自動的に取得してcat => $category_id
に渡し、それに応じてループを更新します。
<ul class="sort-by-category">
<?
$args = array(
'orderby' => 'name',
'parent' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
echo '<li><a class="browse-categories" href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>';
}
?>
</ul>
<?
// Our variables
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;
// grab slug from url
$category_id = get_query_var('cat');
// define args
$args = array(
'posts_per_page' => '36',
'paged' => $page,
'post_type' => 'theme_video',
'cat' => $category_id
);
// place args in query
$category_posts = new WP_Query($args);
// our loop
if($category_posts->have_posts()) {
while($category_posts->have_posts()) {
$category_posts->the_post();
get_template_part( 'partials/content', 'browse' );
}
}
wp_reset_query();
?>