Плагин не помещает скрипт или стиль в очередь - Пользовательский запрос

Я использую плагин 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'));, что может быть не лучшим решением, но, похоже, работает на всех страницах.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Строка if ( !is_singular() ) { оценивается как ИСТИНА на страницах архива и поиска, потому что эти страницы не отображают единственный ресурс (is_singular () возвращает false, а затем инвертируется с помощью символа "!"). Таким образом, код в этом блоке if никогда не запускается на вашей странице, потому что is_singular оценивается как ИСТИНА, а затем отменяется знаком "!".

Однако архив и страницы поиска - единственные места, где он работает.

BlueHelmet 15.05.2018 17:33

правильно, если is_singluar () возвращает false на этих страницах, то! is_singular принимает значение true и запускает код. Я вижу, что меня сбивает с толку. Буду обновлять.

Max Jones 15.05.2018 17:50

Ах я вижу. Хорошо, поэтому, если я изменю его на is_singular() без восклицательного знака, или даже если я изменю его на что-то вроде !is_home(), он все равно не будет работать на моей пользовательской странице. !is_home() по-прежнему работает с архивом и поиском.

BlueHelmet 15.05.2018 18:43

is_singular работает с глобальным значением $ wp_query, возможно, что ваша установка значения null влияет на результат функции.

Max Jones 15.05.2018 19:10

Спасибо, я удалил эти две строки $wp_query = NULL;, а также $temp_query = $wp_query; Пагинация по-прежнему работает, но, к сожалению, плагин по-прежнему не работает.

BlueHelmet 15.05.2018 20:46

Для простоты я изменил свой цикл запроса. Отредактируйте выше. Пагинация по-прежнему работает, а плагин - нет :(

BlueHelmet 15.05.2018 20:53

Хорошо, даже если это сработает, я не думаю, что это долгосрочное решение, но что произойдет, если вы удалите блок if (! Is_singular) из остальной части кода?

Max Jones 15.05.2018 21:04

Хорошо, я полностью удалил оператор if. По-прежнему работает над архивом и поиском. Без изменений на настраиваемой странице. Я нахожу это очень запутанным.

BlueHelmet 15.05.2018 21:18

Хорошо, интересно. Не могли бы вы поделиться выводом html для страницы, где он не работает? Если он кажется слишком большим для этого, вы кодируете сообщение в codehare.io и отвечаете ссылкой.

Max Jones 15.05.2018 21:29

Рад, что ты попросил меня сделать это. Похоже, что таблица стилей плагина и javascript действительно выводятся. Мой заполнитель html был неправильным, поэтому он не получал css. Код найден здесь

BlueHelmet 16.05.2018 00:59

Похоже, что причина, по которой часть плагина javascript не работает, имеет какое-то отношение к строке if (pageNum <= max) { /*implement plugin*/}. Я отмечаю ваш ответ правильным, поскольку вы решили мой первоначальный вопрос, спасибо!

BlueHelmet 16.05.2018 01:11

Другие вопросы по теме