タスク: 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