У меня проблема с разбиением на страницы, которая, кажется, связана с тем фактом, что $wp_query->max_num_pages
возвращает 0
.
Я считаю, что это связано с 0
сообщениями WordPress по умолчанию.
Итак, я использую плагин WP Download Manager Pro , который создает пользовательский тип записи wpdmpro
.
У меня есть страницы для каждой категории, и, используя цикл, яперебирайте каждое сообщение с post-type
из wpdmpro
.
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish',
'posts_per_page' => 2,
'paged' => $paged,
'post_type' => 'wpdmpro',
'wpdmcategory' => $category->category_nicename,
'tag' => $cat_tag
);
query_posts($args)
?>
<?php if (have_posts()) : ?>
/* content goes here */
<?php endif; ?>
<?php else : ?>
<div class="row">
<h2 class="center">Not Found</h2>
<p class="center">Sorry, but you are looking for something that isn't here.</p>
<?php get_search_form(); ?>
</div>
<?php endif; ?>
echo $wp_query->max_num_pages /* returns 0 */
echo $wp_query->found_posts /* returns 0 */
Хотя у меня на самом деле есть 11
сообщений в wpdmpro
post_type
. Так почему эхо не делает следующее?
echo $wp_query->max_num_pages /* Should return 2 because I have 11 posts with 10 per page */
echo $wp_query->found_posts /* Shoudl return 11 because I have 11 posts */
Попробовал следующее, чтобы увидеть, будет ли это работать
add_action( 'pre_get_posts', 'action_pre_get_posts' );
function action_pre_get_posts( $q )
{
$q->set('max_num_pages', 20);
}
Но при переходе к page/2/
я все равно получаю страницу 404.
URL, который я нажимаю, - /category-name/page/2
, который возвращает 404
.
Должно быть решение для этого?
Как заставить мой сайт игнорироватьстандартные типы сообщений WordPress и использовать то, что я на самом деле определяю, wpdmpro
типы сообщений?
Редактировать: я тоже пытался использовать класс WP_Query
, но при переходе к * 1041 все еще нажимал на страницу 404. *
Просто несколько вещей, которые нужно добавить на случай, если они каким-либо образом связаны.
В моих настройках постоянных ссылок у меня есть пользовательская структура
/%category%/%postname%/
и моя категория по умолчаниюbase .
В моих настройках WP Download Manager мой WPDM Category URL Base
равен .
У меня также есть эти 2 функции фильтра, которые были скопированы из ответов здесь, и яя новичок в Wordpress, поэтому я не уверен в возможных последствиях их использования?
add_filter('category_rewrite_rules', 'vipx_filter_category_rewrite_rules');
add_filter('user_trailingslashit', 'remove_category', 100, 2);
function vipx_filter_category_rewrite_rules($rules) {
$categories = get_categories(array('hide_empty' => false));
if (is_array($categories) && !empty($categories)) {
$slugs = array();
foreach($categories as $category) {
if (is_object($category) && !is_wp_error($category)) {
if (0 == $category - > category_parent) {
$slugs[] = $category - > slug;
} else {
$slugs[] = trim(get_category_parents($category - > term_id, false, '/', true), '/');
}
}
}
if (!empty($slugs)) {
$rules = array();
foreach($slugs as $slug) {
$rules['('.$slug.
')/feed/(feed|rdf|rss|rss2|atom)?/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
$rules['('.$slug.
')/(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
$rules['('.$slug.
')(/page/(\d+)/?)?$'] = 'index.php?category_name=$matches[1]&paged=$matches[3]';
}
}
}
return $rules;
}
function remove_category($string, $type) {
if ($type != 'single' && $type == 'category' && (strpos($string, 'category') !== false)) {
$url_without_category = str_replace("/wpdmcategory/", "/", $string);
return trailingslashit($url_without_category);
}
return $string;
}
Я также убедился, что ни один из постов-слагов не конфликтовал с названием категории.