Intereting Posts
Woocommerce – печать пользовательского поля продукта в электронной почте Панель инструментов WordPress не работает! Есть ли способ запланировать автоматические обновления ядра WordPress? WooCommerce: количество в корзине Показывать в категории (таксономии) ряд сообщений, которые я хочу Сохранение содержимого сообщения в базе данных с помощью do_shortcode? Можно ли показывать полное содержание сообщения, когда в сетке есть только одно сообщение? Почему мой файл cookie не отключается при выходе из системы? Добавление нового формата сообщения при активации плагина Получение данных API с использованием URL для фильтрации сообщений по почте meta похож на магазин /? Product_cat = "painting" Код шаблона для разделения сообщения и печати настраиваемого поля? Как удалить все сообщения и вложения пользователя при его удалении? Опытный вид виджетов вызывает отзывчивый слайдер, который не отображается Как WordPress интерпретирует PHP-код?

разработка плагинов: проблема с функциями

У меня есть эта очень простая схема для создания моего первого плагина, но теперь у меня есть одна проблема: когда я добавляю крючок в add_action в пункте 1, но мне нужно получить цвет из функции короткого кода, поэтому, когда я помещаю код в пункт 2 не работает.

class myclass { public function init() { global $shortcode_tags; add_shortcode( MYSHORTCODE, array( 'myclass', 'shortcode' ) ); // * point 1 return; } public function shortcode( ) { // want to run add_action here // i need to get the color from shortcode that part is done // question is how i can run add_action from here and pass // the variable to function globalcolor (point 3), then run it in wp_head? // * point 2 } function globalcolor($color) { echo '<style>body{color:' .$color . '}</style>' . "\n"; // * point 3 } } add_action( 'init', array( 'myclass', 'init', ) ); the code to add: add_action( 'wp_head', array( 'myclass', 'globalcolor' ) ); 

Есть идеи? и извините за мой плохой английский.

Основная проблема заключается в том, что вы используете статические обратные вызовы, пока вы должны передавать объект, чтобы у вас был доступ к вашим свойствам класса.

Вы можете запустить инициализацию следующим образом:

 class Myclass { public function __construct() { // Object method call, instead of a static one add_action('init', array($this, 'init')); } public function init() { // add_shortcode(...); } } // Trigger constructor new Myclass; 

В другой заметке вместо стилей жесткого кодирования в <head> вы можете вместо этого настроить классы тела. Для body_class доступен body_class filter ( соответствующий пример ).