web-dev-qa-db-ja.com

ショートコードを使用して投稿を表示するためのアクションを追加します。

私はユーザーにフロントエンドからの投稿を挿入させるための簡単なプラグインを開発しています。

私は、例えば次のように、ユーザが任意のページに配置できるショートコード[add-post]を持っています。私のウォールページ

My Wall Pageに、タイトルフィールド、コンテンツフィールド、カテゴリ選択フィールドを持つ簡単なフォームが表示されるので、ユーザーは自分の投稿をどのカテゴリに入れるかを選択できます。

アクションがどうなるべきかよくわかりませんか?

add_shortcode('add-post','my_fucntion');
function my_function(){
  <form>...My form for inserting a new post goes here...</form>
}

add_action('????', 'my_fucntion');

フックは何にすべきですか? 'init'、 'widgets_init'を試しましたが、役に立ちませんでした。アクションを追加しない場合、または 'init'または 'widgets_init'を追加した場合でも、フォームは3回表示されます。最上部に2回、ショートコードの代わりに1回(つまり、私のショートコードを置き換えます)

1
Sarthak Patel

ショートコードのアクションにフックする必要はありません - add_shortcode()を使用してショートコードを追加すると、the_content()を呼び出したときにそれが実行されます。そうは言っても、あなたのショートコードのための関数は、単にそれを完全にエコーするのではなく、あなたの出力を返す必要があります。そうでなければ、あなたはあなたのフォームが予想以上に早く現れることに気付くでしょう。

3
helenhousandi

ショートコードのアクションにフックする必要はありません - add_shortcode()を使用してショートコードを追加すると、the_content()を呼び出したときにショートコードが実行されます。そうは言っても、あなたのショートコードに対するあなたの関数は、単にそれを完全にエコーするのではなく、あなたの出力を返す必要があります。そうでなければ、あなたはあなたのフォームが予想以上に早く現れることに気付くでしょう。

0
user65357