Как правильно расширить класс WPSEO_Twitter в Yoast в теме для WordPress

Задача:
Чтобы позволить пользователям CMS изменить изображение, используемое при публикации сообщения в Twitter. Yoast использует Избранные изображения при создании карты Twitter.

Подход:
Добавить пользовательское метаполе в сообщения. Расширьте класс WPSEO_Twitter и / или только приватную функцию output_metatag (). Если настраиваемое мета-поле не пустое, используйте значение настраиваемого поля вместо значения по умолчанию.

Код:

if (class_exists('WPSEO_Twitter')) :
remove_action( 'wpseo_head', array( 'WPSEO_Twitter', 'get_instance' ), 40 );
add_action( 'wpseo_head', array( 'EXAMPLE_WPSEO_Twitter', 'get_instance' ), 40 );

class EXAMPLE_WPSEO_Twitter extends WPSEO_Twitter {
// etc
}
endif;

Вопросы:
Remove_action не работает, и мета-код Twitter дублируется. Класс плагина и мой расширенный класс выполняются.

Ссылки: https://github.com/Yoast/wordpress-seo/blob/trunk/frontend/class-twitter.php

0

Решение

Я думаю, что было бы проще добавить фильтр wpseo_twitter_image это меняет образ на то, что вы хотите.

Нечто подобное

add_filter("wpseo_twitter_image", function($img) {
if($myimg = get_post_meta(get_the_ID(), "custom-twitter-image", true)) {
return $myimg;
}
return $img;
});

Должен, вероятно, работать на вас, если я вас правильно понял.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]