PHP関数を含むHTMLテンプレートページを返す


10

ショートコードを使用してサイトに挿入できるフォームを作成したいと考えています。

HTML部分を別のファイルに作成し、それをPHPショートコードで挿入できれば(ページのロジックをショートコードにするメカニズムから分離するため)、本当にすばらしいでしょう。

どうすればこれができますか?

-更新-

これは私がやったことです:私は2つのファイルを持っています。1つは「profiletemplate.php」と呼ばれ、もう1つは「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]ショートコードを使用します。

アップデート2

したがって、このメソッドは機能していますが、ショートコードが呼び出される場所にHTMLを挿入していません。代わりに、ページの上部にコンテンツを挿入するだけです(関数で「return 'Testing」ではなく「echo' Testing」と言った場合と同じです)。


さて、まず第一に、プレーンHTMLをPHPファイルに書き込むことができます。次にfunctions.php、この特定のファイルを必要とする/インクルードする関数をに記述add_shortcode()し、目的のショートコードを設定して関数を呼び出す必要があります。
tfrommen 2013年

回答:


24

私の以前のコメントで忘れていたのは、ショートコードコンテンツを返すことでした。提案されたものincludeと私の選択肢の両方がコンテンツget_template_partを直接出力します(これは、ショートコードが呼び出される場所ではなく、ページの上部にコンテンツが表示されている状態です)。これに対処するには、出力バッファリングを使用する必要があります。

functions.php(またはサイトのサイト固有の関数ファイル)でショートコードを定義します。

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、ショートコードを配置した任意の場所に読み込まれます。


パーフェクト!これは素晴らしい働きをします!
ウィリアム

プラグイン内で同じことを行う場合は、includeを使用する必要があります。wordpress.stackexchange.com/a/124794/75817を
patrics

すごい...私の
dipak_pusti

2

次のものを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>

1
get_template_part()ショートコード関数の中で使用することもできます。
helgatheviking 2013年

@tfのソリューションを実装してみました-私はそれについて私の投稿に更新を追加しました
ウィリアム

@helgatheviking-その関数はどのように機能しますか?
ウィリアム

get_template_part()の説明についてはコーデックスを参照し、ショートコードと組み合わせて使用​​する方法については私の回答を参照してください。
helgatheviking 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.