Запускать JS только на страницах с моим виджетом - PullRequest
2 голосов
/ 08 декабря 2011

Я пытаюсь получить виджет для загрузки только javascript на страницу, где присутствует виджет.

Я пытался добавить действие добавления в 'showWidget', но оно не сработало.

Что я делаю не так?

PHP

wp_register_sidebar_widget('MyWidget','MyWidget', 'showWidget');
add_action('wp_enqueue_scripts', 'addScript'); //now the script appears on every page

function addScript()
{
    wp_register_script('MyWidgetJs', plugins_url( '/script.js' , __FILE__), array('jquery'));
    wp_enqueue_script('MyWidgetJs');
}
function showWidget($args)
{
    // add_action('wp_enqueue_scripts', 'addScript'); //I tried this but it doesn't work :(
    wp_enqueue_script('MyWidgetJs');
    extract($args);
    /* do widget stuff */
}

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Кажется, что новая версия WordPress поддерживает это: http://codex.wordpress.org/Version_3.3

Зарегистрируйте ваш скрипт, но не ставьте его в очередь.В своем виджете PHP добавьте wp_enqueue_script ('your_script_name');и он загрузит его только тогда, когда ваш виджет будет использован, и поместит его в нижний колонтитул.

Вы собираетесь обновить до 3.3, верно?:)

ТАК, что-то вроде этого должно работать просто отлично:

wp_register_sidebar_widget('MyWidget','MyWidget', 'showWidget');
function showWidget($args) {
    wp_enqueue_script('MyWidgetJs');
    extract($args);
    /* do widget stuff */
}
0 голосов
/ 10 декабря 2011

Вы хотите использовать is_active_widget () условно, чтобы сделать что-то вроде:

<?php
if ( is_active_widget('MyWidget') ) {
     add_action('wp_enqueue_scripts', 'addScript'); 
}
?>

используя ваш код выше, конечный виджет может выглядеть так:

<?php
 if ( is_active_widget('MyWidget') ) {
         add_action('wp_enqueue_scripts', 'addScript'); 
    }

function addScript()
{
    wp_register_script('MyWidgetJs', plugins_url( '/script.js' , __FILE__), array('jquery'));
    wp_enqueue_script('MyWidgetJs');
}
function showWidget($args)
{
    wp_enqueue_script('MyWidgetJs');
    extract($args);
    /* do widget stuff */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...