WordPress Dropdown Категории Все ссылки на один

У меня возникла проблема, при которой, хотя изначально страница отображается с выбранным «Все» в раскрывающемся меню, если вы переходите к категории (хорошо отображается), а затем возвращаетесь к «Все» в раскрывающемся списке, вы видите один пост. Это вместо первоначально отображаемой страницы со всеми категориями. Мне нужна страница, чтобы в основном отображать одну и ту же страницу для «Все» независимо. Какие-нибудь мысли?

wp_dropdown_categories('show_option_all=All&hide_empty=0&show_count=0&orderby=name&echo=0');

0

Решение

На прошлой неделе я написал похожую статью о WPSE, и кажется, что они могут быть связаны. Для удобства вот пост

Вот вариант кода, который вы используете. я использую get_categories() здесь, чтобы достичь той же цели. Мне пришлось немного изменить свой код, чтобы сделать его приемлемым для ваших нужд.

Однако для этого нужно внести и другие изменения. Когда вы выбираете All Categories вариант, вы попадете на страницу, которая будет отображать то, что вам нужно отобразить. Эта страница вам придется вручную Создайте

Как вы знаете, в WordPress нет страниц с индексным архивом. (Проверять, выписываться эта почта Я сделал на ту же тему). Что это значит, domain.com/category/ возвращает 404.

Итак, чтобы все это работало, вам нужно будет сделать копию page.php, переименовать ее в нечто вроде page-category.php (см. кодекс о том, как создавать собственные шаблоны страниц), откройте его, создайте свой пользовательский запрос отображать то, что вы хотели бы отображать при посещении этой страницы

Теперь вам нужно создать свою страницу в бэкэнде. Я хотел бы предложить вам использовать слизень category так что когда вы посещаете domain.com/category/, эта страница будет отображаться. (Просто помни, ты не могу создать дочерние страницы для этой страницы, это нарушит иерархию). Я также сделал код для перехода domain.com/category/ когда All Categories выбран

Кроме того, код должен работать нормально. Вам просто нужно проверить структуру URL, а также установить параметры в get_categories() чтобы удовлетворить ваши потребности. Вот выпадающий код.

<select name="event-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=""><?php echo esc_attr(__('Select Category')); ?></option>

<?php
$option = '<option value="' . get_option('home') . '/category/">All Categories</option>'; // change category to your custom page slug
$categories = get_categories();
foreach ($categories as $category) {
$option .= '<option value="'.get_option('home').'/category/'.$category->slug.'">';
$option .= $category->cat_name;
$option .= ' ('.$category->category_count.')';
$option .= '</option>';
}
echo $option;
?>
</select>

РЕДАКТИРОВАТЬ

У меня на самом деле была идея, которая пригодится мне. Недавно я ответил на вопрос об отображении всех категорий в списке со всеми заголовками сообщений в определенной категории. Эта же идея может быть использована в вашем шаблоне page-category.php.

Когда пользователь выбирает All Categories вариант, они будут перенесены на эту страницу, где будут перечислены все категории и заголовок сообщения.

Вот полный код 🙁для объяснения кода, см. мой пост Вот)

В твоих functions.php

add_action( 'transition_post_status', 'publish_new_post', 10, 3 );

function publish_new_post() {
delete_transient( 'category_list' );
}

В вашем шаблоне, где вам нужно отобразить свой список

<?php
if ( false === ( $q = get_transient( 'category_list' ) ) ) {

$args = array(
'posts_per_page' => -1
);

$query = new WP_Query($args);

$q = array();

while ( $query->have_posts() ) {

$query->the_post();

$a = '<a href="'. get_permalink() .'">' . get_the_title() .'</a>';

$categories = get_the_category();

foreach ( $categories as $key=>$category ) {

$b = '<a href="' . get_category_link( $category->cat_ID ) . '">' . $category->name . '</a>';

}

$q[$b][] = $a; // Create an array with the category names and post titles
}/* Restore original Post Data */
wp_reset_postdata();

set_transient( 'category_list', $q, 12 * HOUR_IN_SECONDS );
}

foreach ($q as $key=>$values) {
echo $key;

echo '<ul>';
foreach ($values as $value){
echo '<li>' . $value . '</li>';
}
echo '</ul>';
}?>
0

Другие решения

Других решений пока нет …