Intereting Posts
Как изменить запрос на страницах категорий, чтобы показывать только липкие сообщения? Просмотрите исходный код стороннего плагина? Какие неожиданные данные могут храниться в таблице терминов и связанных таблицах? Как загрузить сценарий условно на пользовательское поле в wp_postmeta? Постоянная ссылка типа сообщения для родителя / ребенка, ошибка 404 страницы не найдена WP_Query, который будет искать сообщения после 2 недель назад или с определенным метазначением Изменение имени блога WordPress и веб-адреса WordPress добавляет текст, отфильтрованный текст, внутри тега последнего абзаца контента (а не после него) add_rewrite_rule и передача переменных для пользовательских типов сообщений Шаблон категории для отображения разных категорий на основе родительского Как удалить редактор плагинов из меню администратора Добавление персонализированного статуса сообщения для видимости в мета-окне публикации Добавление настраиваемых типов сообщений в панель управления использование нескольких слов wordpress результатов поиска Получить уникальные категории – группа?

Категория с типом pagination post type 404

У меня есть шаблон категории с пользовательским типом сообщения, который выглядит так:

<?php $category = get_query_var('cat'); $paged = (get_query_var("page")) ? get_query_var("paged") : 1; $args = array( 'cat' => $category, 'paged' => $paged, 'post_mime_type' => 'image', 'posts_per_page' => 9, 'post_status' => 'inherit', 'post_type' => 'attachment' ); query_posts($args); $count = $wp_query->found_posts; ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <a href="<?php the_permalink(); ?>"><?php echo wp_get_attachment_image($image->ID, "medium"); ?></a> <h5><?php the_title(); ?></h5> <?php $attachment = get_post(get_post_thumbnail_id()); // Get post by ID echo '<p>'.$attachment->post_content.'</p>' ?> <?php endwhile; endif; ?> <ul class="pagi"> <li><?php posts_nav_link(' | ','< Previous','Next >'); ?></li> <li><?php echo "(Page: ". $paged . " of " . $wp_query->max_num_pages .")"; ?></li> </ul> <?php wp_reset_query(); ?> 

Все работает, кроме пейджинга … когда я просматриваю страницу 2, url выглядит так: http://joshrodg.com/ourpictureshare/category/pictures/unknown/page/2/ , что составляет 404.

Я не уверен, как должен выглядеть URL-адрес, но я думаю, что тип сообщения в моем запросе вызывает проблему.

Может ли кто-нибудь указать мне в правильном направлении?

Благодаря,
мистифицировать

Solutions Collecting From Web of "Категория с типом pagination post type 404"

Я нашел решение!

Мне удалось найти функцию, которая изменила запрос на странице категории ( https://wordpress.org/support/topic/custom-types-category-pagination-404/#post-1913902 – на первой странице внизу , написанное: Mark / t31os).

Добавьте это в functions.php :

 add_action( 'parse_query','changept' ); function changept() { $category = get_query_var('cat'); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; if (is_category() && !is_admin()) set_query_var( 'cat', $category ); set_query_var( 'paged', $paged ); set_query_var( 'posts_per_page', 9 ); set_query_var( 'post_status', 'inherit' ); set_query_var( 'post_type', 'attachment' ); return; } 

Вот как выглядит category.php :

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <a href="<?php the_permalink(); ?>"><?php echo wp_get_attachment_image($image->ID, "medium"); ?></a> <h5><?php the_title(); ?></h5> <?php $attachment = get_post(get_post_thumbnail_id()); // Get post by ID echo '<p>'.$attachment->post_content.'</p>' ?> <?php endwhile; endif; ?> <ul class="pagi"> <li><?php posts_nav_link(' | ','< Previous','Next >'); ?></li> <li><?php echo "(Page: ". $paged . " of " . $wp_query->max_num_pages .")"; ?></li> </ul> 

ОБНОВИТЬ:

Я столкнулся с проблемой с моим решением … он выполнялся на всех страницах. Все страницы, кроме страницы категории, возвращали 404, поэтому мне нужно было запустить код только на странице категории, чтобы исправить проблему.

Вот обновленный код functions.php :

 $url = $_SERVER['REQUEST_URI']; if (strpos($url,'category') !== false) { add_action( 'parse_query','changept' ); function changept() { $category = get_query_var('cat'); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; if (is_main_query()) { set_query_var( 'cat', $category ); set_query_var( 'paged', $paged ); set_query_var( 'posts_per_page', 9 ); set_query_var( 'post_status', 'inherit' ); set_query_var( 'post_type', 'attachment' ); } return; } } 

В основном, это проверяет, является ли слово «категория» частью URL-адреса, и потому что я использую это только на моей странице category.php , это будет работать, не затрагивая никакой другой страницы. Вероятно, есть лучшее решение, но это работает для моего проекта. Кроме того, еще один, if был добавлен для целевого основного запроса: is_main_query() … таким образом, если у вас есть другие запросы на странице, они все равно будут работать нормально.

Я уверен, что вы можете сделать что-то подобное с pre_get_posts , это предложение Майло, но я просто не мог понять, как использовать эту функцию с моим шаблоном.