add_action wp_head не работает

18 окт. 2013 г., 19:55:58
Просмотры: 21K
Голосов: 3

Я пытаюсь добавить некоторый код в head (а именно блок скрипта отслеживания) через плагин, который я разрабатываю.

У плагина есть интерфейс, где пользователь вводит некоторые детали, которые затем добавляются в таблицу опций. Пока все это работает отлично. Но затем я хочу написать условное выражение: если есть значение, то добавить в head. В основном, у меня все это в главном файле плагина и выглядит так:

if(get_option( 'MyOptionName' )){
    function testingone(){ ?>
        <script>var Script = GoesHere; </script>
    <?php ;}
    add_action('wp_head','testingone');
}

Я пробовал размещать это внутри самого блока, который извлекает данные и затем добавляет в опции, но это не сработало, затем я решил сделать это таким образом, где он проверяет, есть ли опция в таблице, но это также не добавляет ничего в head. В некоторых местах я видел, что люди помещают add_action перед функцией, но в кодексе показан пример, где он находится после. Но в любом случае я пробовал и не преуспел.

Кто-нибудь видит, где ошибка?

Спасибо

2
Комментарии

Пробовали ли вы выводить значение через echo или print_r, чтобы посмотреть, что возвращается? Возможно, это просто опечатка в названии вашей опции по сравнению с записью в wp_options

Eric Holmes Eric Holmes
18 окт. 2013 г. 20:05:14

Замените if(get_option( 'MyOptionName' )){ на if ( true ) {. Если код выполнится, значит get_option( 'MyOptionName' ) возвращает false.

Charles Clarkson Charles Clarkson
18 окт. 2013 г. 20:06:07
Все ответы на вопрос 4
1

Вынесите add_action() за пределы функции и поместите условие внутрь callback-функции. Также, если вы выводите скрипт напрямую, используйте wp_print_scripts вместо wp_head. У вас также есть синтаксическая ошибка.

function testingone(){ 
    if( get_option( 'MyOptionName' ) ) {
        ?>
        <script>var Script = GoesHere; </script>
        <?php
    }
}
add_action( 'wp_print_scripts','testingone' );
18 окт. 2013 г. 20:07:05
Комментарии

Это сработало идеально, большое спасибо. Метод, указанный выше, также работал, но если wp_print_scripts является более правильной практикой, я буду использовать его.

robolist robolist
18 окт. 2013 г. 20:36:19
1

Попробуйте изменить ваш код следующим образом:

function testingone() {
    if( FALSE !== get_option( 'MyOptionName' ) ) {
        echo( 'ok, это выводится в head!' );
    } 
}
add_action( 'wp_head', 'testingone' );

Также проверьте в файлах вашей темы (скорее всего в header.php), что функция wp_head() вызывается, и убедитесь, что опция MyOptionName установлена для сайта.

Дополнение — Вам также следует использовать wp_enqueue_script() для добавления JavaScript на ваш сайт, вместо простого вывода в <head>.

Ссылки

18 окт. 2013 г. 20:05:10
Комментарии

У меня это сработало немного иначе, но я попробовал wp_print_scripts, как советовал Chip Bennett, и это помогло. В любом случае, спасибо за помощь и советы. Удачи!

robolist robolist
18 окт. 2013 г. 20:37:30
1

Смотрите код ниже. Добавьте оператор IF внутри функции.

function testingone(){ 
    if(get_option( 'MyOptionName' )){
    ?>
    <script>var Script = GoesHere; </script>
    <?php } 
      }
add_action('wp_head','testingone');
18 окт. 2013 г. 20:05:21
Комментарии

Это сработало идеально, хотя я был уверен, что уже пробовал этот метод раньше, очевидно, нет :) Большое спасибо.

robolist robolist
18 окт. 2013 г. 20:34:33
6
function plugin_script() {
       wp_enqueue_script( 'Jquery-min', WP_PLUGIN_URL. '/Test Plugin/jquery-min.js', false, '1.11.0' );<br/>
       wp_enqueue_style('pluginstyle', WP_PLUGIN_URL. '/Test Plugin/pluginstyle.css',false,'1.0',"all");<br/>
}
add_action( 'wp_head', 'plugin_script' );

Хук "wp_head" срабатывает внутри секции "head" HTML-документа.

Функция wp_enqueue_script() используется для подключения скриптов, а wp_enqueue_style - для таблиц стилей из плагина. "WP_PLUGIN_URL." получает данные из папки плагина в темах. "Test plugin" - это название вашего плагина. "pluginstyle.css" - таблица стилей плагина. "jquery-min.js" - JavaScript-файл плагина.

4 июл. 2016 г. 14:00:29
Комментарии

Пожалуйста, объясните, как это работает. Просто сброс кода - не лучший ответ.

bravokeyl bravokeyl
4 июл. 2016 г. 14:04:40

Это не сброшенный тип кода, я уже использовал его в своем плагине. В чем ваши сомнения? Спросите меня, и я проясню этот код.

Praveen Praveen
4 июл. 2016 г. 14:08:13

Вы пробовали использовать этот код, @bravokey?

Praveen Praveen
4 июл. 2016 г. 14:10:12

Я не пробовал это, я предлагал вам добавить некоторое объяснение к опубликованному коду о том, как это отвечает на исходный вопрос.

bravokeyl bravokeyl
4 июл. 2016 г. 14:11:28

Спасибо за ваше предложение, на самом деле я новичок в этом @ bravokeyl

Praveen Praveen
4 июл. 2016 г. 14:20:58

Пожалуйста, посмотрите [ответ]

fuxia fuxia
4 июл. 2016 г. 15:04:36
Показать остальные 1 комментариев