Задача:
Чтобы позволить пользователям 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
Я думаю, что было бы проще добавить фильтр 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;
});
Должен, вероятно, работать на вас, если я вас правильно понял.
Других решений пока нет …