Я использую плагин Pro Blog Design, найденный здесь. Он добавляет кнопку для загрузки большего количества контента. Он хорошо работает в моем архиве и на странице поиска, но совсем не работает на настраиваемой странице (например, "page-customname.php").
На настраиваемой странице также есть настраиваемый цикл запросов с разбивкой на страницы:
<?php $the_query = array('post_type' => 'post', 'post_status' => 'publish', 'category_name' => 'stories');
// Get current page and append to custom query parameters array
$the_query['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
// Instantiate custom query
$custom_query = new WP_Query( $the_query );
// Pagination fix
$temp_query = $wp_query;
$wp_query = NULL;
$wp_query = $custom_query;
// Output custom query loop
if ( $custom_query->have_posts() ) :
while ( $custom_query->have_posts() ) :
$custom_query->the_post();
echo 'loop items go here';
endwhile;
endif;
wp_reset_postdata();
$wp_query = NULL;
$wp_query = $temp_query;
?>
В конце этого цикла пагинация плагина, опять же, хорошо работает с архивом и поиском, но не на странице пользовательского запроса.
Я могу сказать, что скрипт и стиль не помещаются в очередь, потому что стиль css плагина не работает (только на этой странице).
Есть ли причина, по которой это может быть?
Вот функция плагина:
function pbd_alp_init() {
global $wp_query;
// Add code to index pages.
if ( !is_singular() ) {
// Queue JS and CSS
wp_enqueue_script(
'pbd-alp-load-posts',
plugin_dir_url( __FILE__ ) . 'js/load-posts.js',
array('jquery'),
'1.0',
true
);
wp_enqueue_style(
'pbd-alp-style',
plugin_dir_url( __FILE__ ) . 'css/style.css',
false,
'1.0',
'all'
);
// What page are we on? And what is the pages limit?
$max = $wp_query->max_num_pages;
$paged = ( get_query_var('paged') > 1 ) ? get_query_var('paged') : 1;
// Add some parameters for the JS.
wp_localize_script(
'pbd-alp-load-posts',
'pbd_alp',
array(
'startPage' => $paged,
'maxPages' => $max,
'nextLink' => next_posts($max, false)
)
);
}
}
add_action('template_redirect', 'pbd_alp_init');
Обновлено: Обновленный пользовательский запрос, намного проще, без null
<?php
// Define custom query parameters
$the_query = new WP_Query( array(
'post_type' => 'post',
'post_status' => 'publish',
'category_name' => 'stories',
'paged' => get_query_var('paged')));
while ( $the_query->have_posts() ) : $the_query->the_post();
echo 'loop stuff';
endwhile;
wp_reset_postdata();?>
Обновлено: рабочее решение!
Проблема была в javascript. !is_singular() нужно было изменить на что-то, что не отменяет настраиваемую страницу, например: !is_home();.
Кроме того, javascript не распознает запрос или связанные с ним номера страниц, поэтому мне пришлось изменить $global wp_query на $wp_query = new WP_Query( array('post_type' => 'post', 'post_status' => 'publish'));, что может быть не лучшим решением, но, похоже, работает на всех страницах.






Строка if ( !is_singular() ) { оценивается как ИСТИНА на страницах архива и поиска, потому что эти страницы не отображают единственный ресурс (is_singular () возвращает false, а затем инвертируется с помощью символа "!"). Таким образом, код в этом блоке if никогда не запускается на вашей странице, потому что is_singular оценивается как ИСТИНА, а затем отменяется знаком "!".
правильно, если is_singluar () возвращает false на этих страницах, то! is_singular принимает значение true и запускает код. Я вижу, что меня сбивает с толку. Буду обновлять.
Ах я вижу. Хорошо, поэтому, если я изменю его на is_singular() без восклицательного знака, или даже если я изменю его на что-то вроде !is_home(), он все равно не будет работать на моей пользовательской странице. !is_home() по-прежнему работает с архивом и поиском.
is_singular работает с глобальным значением $ wp_query, возможно, что ваша установка значения null влияет на результат функции.
Спасибо, я удалил эти две строки $wp_query = NULL;, а также $temp_query = $wp_query; Пагинация по-прежнему работает, но, к сожалению, плагин по-прежнему не работает.
Для простоты я изменил свой цикл запроса. Отредактируйте выше. Пагинация по-прежнему работает, а плагин - нет :(
Хорошо, даже если это сработает, я не думаю, что это долгосрочное решение, но что произойдет, если вы удалите блок if (! Is_singular) из остальной части кода?
Хорошо, я полностью удалил оператор if. По-прежнему работает над архивом и поиском. Без изменений на настраиваемой странице. Я нахожу это очень запутанным.
Хорошо, интересно. Не могли бы вы поделиться выводом html для страницы, где он не работает? Если он кажется слишком большим для этого, вы кодируете сообщение в codehare.io и отвечаете ссылкой.
Рад, что ты попросил меня сделать это. Похоже, что таблица стилей плагина и javascript действительно выводятся. Мой заполнитель html был неправильным, поэтому он не получал css. Код найден здесь
Похоже, что причина, по которой часть плагина javascript не работает, имеет какое-то отношение к строке if (pageNum <= max) { /*implement plugin*/}. Я отмечаю ваш ответ правильным, поскольку вы решили мой первоначальный вопрос, спасибо!
Однако архив и страницы поиска - единственные места, где он работает.