Intereting Posts
Как добавить кнопку «Читать дальше» в мой блог? могу ли я создать 2 блога «каналы» в одном блоге Функции записи в WordPress functions.php, которые не заменяют основную функцию WordPress Кто использовать в textarea WordPress Ошибка использования объекта WordPress $ wpdb для получения результата из пользовательской таблицы Ошибка синтаксиса, неожиданный «класс» (T_CLASS) в строке 1 после обновления до php 5.6.4 Могу ли я установить некоторые страницы по умолчанию, которые будут созданы при каждом создании нового блога Отключите функцию перетаскивания на виджетах панели управления для подписчиков. Запланированные частные сообщения публикуются немедленно Пагинация в плагине с пользовательским типом сообщения Плагин – редактор WP отключен Опубликовать пользовательские метаклассы метабокса с помощью wp_editor сообщение / содержание страницы Добавить идентификатор для вывода только для первой опции Сначала закажите по meta value pro, а затем мета значение в моей функции поиска

remove_action: Исходная попытка не удалась, а попытка позже

Я надеюсь, что это подходящее место, чтобы опубликовать это, если нет, просто просто направьте меня в нужное место!

Недавно я наткнулся на плагин, который, помимо прочего, добавил мета-запись в заголовок. Мне нужно было удалить это действие. Запись add_action выглядела так:

add_action( 'wp_head', array( &$this, 'addMetaData' ) ); 

«это» относится к классу, называемому Vc_Base.

Моя первоначальная реакция заключалась в том, чтобы добавить к моим функциям следующее:

 function removeAddMetaData() { $vc = new Vc_Base(); remove_action('wp_head', array(&$vc, 'addMetaData'),10000); } add_action('init', 'removeAddMetaData', 10000); 

Это не сработало. Я также пытался изменить 10000 на другие значения.

Что DID в конечном итоге работает:

 function removeAddMetaData() { remove_action('wp_head', array(visual_composer(), 'addMetaData')); } add_action('init', 'removeAddMetaData'); 

Я отслеживал visual_composer () и имеет только одну строку:

 return vc_manager()->vc(); 

Я отслеживал vc_manager () -> vc () и, среди нескольких других вещей, он содержит следующие строки:

 $vc = new Vc_Base(); $this->factory['vc'] = $vc; return $this->factory['vc']; 

Итак, если это просто то, что я сделал (в кругу), почему моя первоначальная идея не работала? Я бы очень признателен за некоторые отзывы, поскольку я чувствую, что буду понимать WordPress / PHP намного больше, если я это пойму!

Заранее спасибо.

Solutions Collecting From Web of "remove_action: Исходная попытка не удалась, а попытка позже"

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

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

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