Intereting Posts
Разбиение страниц на несколько запросов для разных авторов на author.php Измените тему Ixion, чтобы добавить сообщение на главной странице WordPress Постоянная ссылка Проблема 404 Создать запись в блоге из внешнего источника и установить дату публикации Какова наилучшая практика включения классов «wp-includes» Как разместить 2 субдомена в качестве тематических мест в одном домене? как удалить (не исключать) пункт меню из панели навигации Плагин не отображается на панели инструментов 301 Перенаправление пользовательской иерархии URL-адресов в WordPress Прерывистые ошибки 404, правила перезаписи и BBPress Получить сообщения по идентификаторам (необязательно) Тема WordPress для детей – двадцать html to posts, jpg to featured image, zip-файл содержит jpg и html мы можем добавить дополнительную таблицу или столбец в wordpress для добавления наших данных $ wpdb Ошибка запуска Mysql

Использование глобальных переменных в плагине

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

Вот что я имею;

/************************ * Variables ************************/ global $bClass, $cClass, $dClass, $cExpiry; $bClass = $cClass = $dClass = $cExpiry = get_option('myoption'); 

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

JQuery

 expires: <?php global $cExpiry; echo $cExpiry['cExpiry']; ?>, 

а затем я также буду использовать его в других функциях на одной странице.

Таким образом, это работает для меня, однако мне все еще интересно, правильно ли я делаю это.

update Спасибо за объяснение, ребята, я закончил использование локальных переменных, а также обнаружил ошибку в моем коде;

Поскольку у меня есть все мои переменные, сохраненные в одной опции, я просто использовал одну локальную переменную;

 $options = get_option('myoption'); 

Затем я получаю доступ к массиву, помещая переменную в скобки

 <?php echo $options['var1']; ?> 

Если раньше я делал $bClass = $cClass = $dClass = $cExpiry = get_option('myoption'); что плохо.

Solutions Collecting From Web of "Использование глобальных переменных в плагине"

Есть более простые способы, чем это. Поскольку @Wyck уже заявил, что использование глобальных переменных – плохая идея, вот короткое объяснение и как:

Почему глобалы плохие:

1) Каждый может получить к ним доступ повсюду. Сначала это звучит неплохо, но вы также можете сделать следующее:

 // Your code: default value global $foo; $foo = 'bar'; // User setting: global $foo; $foo = get_option( 'baz' ); // Later in your code if ( 'bar' === $foo ) // do something important // Now I, the end user, do this in a template // or Ernie, the novice developer, does this in his 3rd party plugin: $GLOBALS['foo'] = 42; 

и вдруг ничего не работает, как ожидалось. Прост: глобалы могут быть перехвачены. Они не конфликтуют, и никто не может быть уверен в том, что они содержат.

2) После того, как вы теперь знаете, что они могут меняться «на лету», вы знаете, что они непредсказуемы . И если вы хотите отследить их обратно с помощью IDE (например, PHPStorm, Eclipse / Aptana и т. Д.), Вы никогда не узнаете, где их происхождение или где именно они меняются … если вы не сядете за довольно а также использовать такие вещи, как Breakpoints и что-то вроде XDebug и знать свой путь.

3) Нужно ли мне больше писать? Наверное, нет.

Вывод: поскольку большинство параметров загружаются автоматически, они уже присутствуют на каждой странице / запросе и не нуждаются в обертывании в глобальном. Просто позвоните get_option() когда вам это нужно.

Как перенести данные с PHP на JS

Простой, как есть: wp_localize_script()

Пример: (может использоваться также с login_enqueue_scripts и admin_enqueue_scripts )

 add_action( 'wp_enqueue_scripts', 'wpse115840_scripts' ); function wpse115840_scripts() { wp_enqueue_script( 'wpse_handle', etc... ); // Here goes the magic: wp_localize_script( 'wpse_handle', 'wspeObject', array( 'foo' => 'bar', 'bar' => get_option( 'baz' ) ) ); } 

Теперь вы можете получить доступ ко всем данным из wp_localize_script() (3-го аргумента) в вашем файле javascript, который вы только что зарегистрировали / wpseObject просто вызвав wpseObject . Следующий пример теперь даст вам bar значений:

 console.log( wpseObject.foo ); 

и ваш wpseObject.bar сохранит значение вашего wpseObject.bar .