2017-02-16 9 views
1

私はプラグインを作成していますが、アクティベーションフックとして登録されている関数の中にショートコードを追加しようとしています。関数の中にechoステートメントを追加すると、ヘッダーが送信された後にWordPressが入力を受け取ってもショートコードが表示されないという文句があるので、関数が呼び出されていることがわかります。しかし、関数の外にadd_shortcodeを移動すると、すべて正常に動作します。アクティベーションフックにショートコードを登録していません

何が問題になっているかに関するアイデアはありますか?

これは動作します:

<?php 
/* 
Plugin Name: Testing 
*/ 

function short_code($atts) { 
    return "This is a test"; 
} 

function activate() { 
    add_shortcode('testing', 'short_code'); 
} 

//register_activation_hook(__FILE__, 'activate'); 
add_shortcode('testing', 'short_code'); 

これはしません:

<?php 
/* 
Plugin Name: Testing 
*/ 

function short_code($atts) { 
    return "This is a test"; 
} 

function activate() { 
    add_shortcode('testing', 'short_code'); 
} 

register_activation_hook(__FILE__, 'activate'); 
//add_shortcode('testing', 'short_code'); 
+0

ようこそスタックオーバーフロー!あなたは[ask]を学んで[mcve]を作成することができます。そうすれば、私たちがあなたを助けやすくなります。 – Faegy

+1

@Faegyは私の質問を最小限の例 –

答えて

2

register_activation_hookは一度しか発動 - プラグインが起動されたとき。したがって、あなたのショートコードは、起動時に1回だけ登録され、その後は使用できなくなります。

最初の例では、add_shortcodeを使用する必要があります。 add_shortcode自体はフックなので、別のフックの内側にある必要はありません。

+0

で更新しました。私は 'add_shortcode'が' remove_shortcode'が呼び出されるまでそれを登録したと仮定しました。 –

+0

うれしい私は助けることができました! –

関連する問題