Плагин не ставит в очередь скрипт или стиль - пользовательский запрос - PullRequest
0 голосов
/ 15 мая 2018

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

1 Ответ

0 голосов
/ 15 мая 2018

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

...