親テーマで登録されたショートコードを子テーマで上書きする方法:メモ

悩み
悩み

日本語の情報があまり見つからず英語の情報を見つけたのでメモとして。

関数名を知っていればどうということもない内容ですが、知らなかったため「addがあるならremoveもあるだろう」と調べて確認しました。

実現したいこと

実現したいことは以下の通り。

  • 子テーマを使用
  • 親テーマのショートコードの中身を書き換える
  • ショートコードの名称はそのまま

起きた問題として、親テーマのショートコード内にget_theme_root()get_stylesheet_directory_uri()などの、現在設定しているテーマを基点とした内容を出力する記述が書かれており、子テーマ使用時にエラーが出ました。

新規サイトなら、違うショートコード名で新たに設定すれば簡単に対応できますが、運用中のサイトの場合はそうもいきません。
もしも子テーマを使わなくなった場合に問題が出てしまいます。

そこで、ショートコード名を変更せずに子テーマで上書きする方法が必要になりました。

コード

調べましたら該当するコードが見つかりましたので以下のサイトから引用します。


add_action(‘init’, ‘remove_parent_theme_shortcodes’);

function remove_parent_theme_shortcodes() {

// remove shortcode from parent theme
// shortcode_name should be the name of the shortcode you want to modify
remove_shortcode( ‘shortcode_name’ );

// add the same shortcode in child theme with our own function
// note to self: think of a better example function name
add_shortcode( ‘shortcode_name’, ‘wdm_child_theme_shortcode_name’ );

}

function wdm_child_theme_shortcode_name( $atts ) {
// write your shortcode function here.
}

通常のフックやフィルターと同様に、一度removeしてから同名で再設定すれば動作します。

結び

addがあればremoveもある、と気付けば知らない関数も早く探せる場合もあると実感できました。

0人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄