使用PHP函数返回HTML模板页面


10

我想创建一个可以使用简码插入到我的网站的表单。

如果我可以在单独的文件中创建HTML部分,然后将其插入PHP短代码(以将页面的逻辑与将其简化为短代码的机制分开),那将是非常不错的。

我该怎么办?

-更新-

这就是我所做的:我有两个文件。一个叫做“ 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]短代码。

更新2

因此,此方法有效,但未在调用短代码的位置插入HTML。相反,它只是在页面顶部插入内容(例如,如果我在函数中说“ echo'Testing”而不是'return'Testing”)。


好吧,对于初学者来说,您可以在PHP文件中编写纯HTML。然后,您functions.php必须在自己的程序中编写一个需要/包含此特定文件的函数,并通过add_shortcode()设置所需的短代码来调用该函数。
tfrommen 2013年

Answers:


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 17-10-12

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()在您的shortcode函数内部使用。
helgatheviking 2013年

我尝试实现@tf的解决方案-我在帖子中添加了更新
威廉

@helgatheviking-该功能如何工作?
威廉

有关get_template_part()的描述,请参见编解码器,有关如何将其与您的简码结合使用的信息,请参见我的答案。
helgatheviking 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.