Проблема с условной is_page () в WordPress - PullRequest
2 голосов
/ 14 июля 2010

Может кто-нибудь сказать мне, почему этот код не работает? Is_page () не действует.

function tao_scripts() {
if (!is_admin()) {


    wp_deregister_script('jquery');
    wp_register_script('jquery', get_template_directory_uri() . '/js/jquery-1.4.2.min.js', false, '1.4.2');
    wp_enqueue_script('jquery');

    if ( is_page() ) {
        wp_register_script('jquery-validate', get_template_directory_uri() . '/js/jquery.validate.min.js', 'jquery', '1.7');
        wp_enqueue_script('jquery-validate');
    }       
  }
}
add_action('init', 'tao_scripts');

Код находится в php-файле, который включен в мои functions.php.

Я перепробовал все, что мог найти / придумать. Без условного is_page () это работает. Я пытался с wp_reset_query (), без помощи. Я уверен, что WordPress знает свою страницу. is_page (34, 'name', 'Name') тоже не поможет.

Ответы [ 3 ]

2 голосов
/ 14 июля 2012

Это связано с порядком действий

add_action('init', 'tao_scripts');

это действие происходит задолго до извлечения объекта запроса

0 голосов
/ 14 июля 2010

Технически, Торок не прав.is_page прекрасно работает вне цикла.Я предполагаю, что это не работает, потому что вы не используете wp_register_script правильно.Зависимости должны быть массивом:

wp_register_script('jquery-validate', get_template_directory_uri() . '/js/jquery.validate.min.js', array('jquery'), '1.7');

Это должно сделать это.

РЕДАКТИРОВАТЬ:

Как указано в TheDeadMedic, вы должны также подключить это к более позднему хуку,Самое раннее, что вы должны использовать, это wp.На самом деле я бы предложил использовать template_redirect, так как он будет работать только в том случае, если вы работаете в клиентской части (если только вы не хотите заменить jQuery в серверной части).

0 голосов
/ 14 июля 2010

Можете ли вы попробовать проверить свою функцию с определенной страницей:

if ( is_page(34, 'name', 'Name') ) 
{
    // your code here
}
...