web-dev-qa-db-ja.com

子テーマからのショートコードの削除

私は子供のテーマからショートコードを削除しようとしています。私のfunctions.phpファイル(子テーマ用)には、次のように書きました。

function my_remove_shortcode(){
    return '';
}
add_shortcode('entry-Twitter-link', 'my_remove_shortcode');

Entry-Twitter-linkは、親で作成されたショートコードです。しかし、エントリはまだ私の投稿に表示されます。何が悪いのアイデア?

3
Teknophilia

これを試してみてください。すでに追加されているショートコードを削除してから、initフックに新しいショートコードを追加します。

function shortcode_cleaner() {
    remove_shortcode( 'entry-Twitter-link' ); // Not exactly required
    add_shortcode( 'entry-Twitter-link', 'my_remove_shortcode' );
}
add_action( 'init', 'shortcode_cleaner' );

function my_remove_shortcode(){
    return '';
}
12
Joshua Abenazer

ジョシュアの答えに感謝します、そしてそれは本当に命を救うものです。 :)

ところで、私は少し異なる方法を提案することができます。あなたがプラグインを作成し、そして今プロバージョンをリリースしようとしていると仮定します - それであなたは両方のプラグインを完全にコントロールするので、あなたはこのような何かに従うことができます:

実際のプラグイン:

if( !function_exists('wpse36092_shortcode') {
   function wpse36092_shortcode() {
       echo 'This'; //existing content
   }
}
add_shortcode( 'wpse36092', 'wpse36092_shortcode' );

プロプラグイン:

function wpse36092_shortcode() {
       echo 'That'; //overwriting content
}
add_shortcode( 'wpse36092', 'wpse36092_shortcode' );

このメソッドでは、関数の名前はまったく同じでなければなりません。

親テーマと子テーマでも同じことができます。

しかし、やはり、ジョシュアの答えは素晴らしかった。

0
Mayeenul Islam