自分のサイトに挿入するためにショートコードを使用できるフォームを作成したいです。
HTML部分を別のファイルで作成してから、それをPHP shortcodeを付けて挿入することができれば(それをショートコードにするという仕組みからページのロジックを切り離すために)本当にいいでしょう。
どうすればいいの?
これは私がしたことです:私は2つのファイルを持っています。一つは 'profiletemplate.php'、もう一つは 'scodes'です。どちらも私が自分のサイト用に作っているプラグインの一部で、それらを初期化するinit.phpが付いています。その内容は次のとおりです。
init.php
<?php
require_once(dirname(__FILE__).'/pages/scodes.php');
?>
scodes.php
function jf_testcode() {
include dirname(__FILE__) . 'profiletemplate.php';
}
add_shortcode('testfield', 'jf_testcode');
profiletemplate.php
<?php // Template for my form shortcode ?>
<form>
Testing
</form>
それから私は自分のサイトのページで[testfield]ショートコードを使います。
そのため、このメソッドは機能していますが、ショートコードが呼び出される場所にHTMLを挿入するわけではありません。その代わりに、単にページの上部にコンテンツを挿入しているだけです(関数で 'return' Testing 'の代わりに' echo 'Testing'を言った場合のように)。
私の以前のコメントで忘れていたことは、ショートコード return content、提案されたinclude
と私の代わりの get_template_part
の両方が直接コンテンツを出力するということです。ショートコードが呼び出される場所ではなく、あなたのページのこれに対抗するには、 出力バッファリング を使用する必要があります。
あなたのfunctions.php(またはあなたのサイトの サイト固有の関数 file)でショートコードを定義してください。
function my_form_shortcode() {
ob_start();
get_template_part('my_form_template');
return ob_get_clean();
}
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );
それから、テーマフォルダにmy_form_template.php
という名前のファイルが必要です。これはショートコードを配置した場所にロードされます。
functions.php に以下を追加してください。
function my_form_shortcode() {
include dirname( __FILE__ ) . 'my_form_template.php';
} // function my_form_shortcode
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );
ファイル my_form_template.php :
<?php // Template for my form shortcode ?>
<form ...>
FIELDS
</form>