将页面模板加载到快捷码中

时间:2019-02-18 作者:Ibrarr Khan

我正在尝试将页面模板加载到一个短代码中,这样我就可以轻松地将内容加载到任何我想要的地方。

我做了一些研究,很多人说这段代码对他们有用,但由于某种原因,这似乎无法正确加载我的模板,因为我只得到一个空白页面。

我知道短代码正在执行,因为它不显示为纯文本,所以我猜加载模板的方式有问题。

非常感谢您的帮助。

public function register(){
        add_shortcode( \'sponsor_main_page\', array($this,\'my_form_shortcode\') );
            $RegistrationFormId = esc_attr( get_option( \'ik_form_id\' ) );
        }

function my_form_shortcode() {
        ob_start();
        get_template_part( \'template-sponsors.php\' );
        return ob_get_clean();
    }

3 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

get_template_part 将slug作为第一个参数,而不是filename。

所以应该是:

get_template_part( \'template-sponsors\' );
还有更多细节。。。此函数采用两个参数:

get\\u template\\u part(字符串$slug,字符串$name=null)

其中,文件名如下所示:

if ( \'\' !== $name )
$模板[]=“{$slug}-{$name}.php”;$模板[]=“{$slug}.php”;

如你所见.php 零件将自动添加。因此,您的代码将尝试加载名为template-sponsors.php.php 我想没有这样的文件。

SO网友:Sunny Johal

很可能是因为您正在添加。php到中的参数get_template_part(). 下面是我为您的问题编写代码的方式:

Prerequisites for this example to work:

<在主题目录中创建一个名为template-parts.template-sponsors.php[sponsor_main_page]

Code to put in your functions.php:

function custom_theme_load_sponsors_template() {
  ob_start();
  get_template_part( \'template-parts/template-sponsors\' ); 
  return ob_get_clean();
}
add_shortcode( \'sponsor_main_page\', \'custom_theme_load_sponsors_template\' );

SO网友:Rick Hellewell

我喜欢使用locate_template, 而不是get_template_part . 这个locate_template 将相当于PHPinclude()include_once(), 这就是我认为你的目标。

locate_template("mycustomfunctions.php",true,true);
把你的mycustomfunctions.php 活动模板文件夹中的文件(最好是子主题)。然后将locate_template() 命令,位于最顶部(注释块之后)。您的mysustomfunctions.php 文件将可用于模板。

这个locate_template 函数由调用get_template_part. 但这些参数允许您定义include的工作方式。看见https://developer.wordpress.org/reference/functions/locate_template/ 了解更多信息。

(Added 请参阅此问题的公认答案:Get template part vs locate template function . )

相关推荐

WordPress核心中未知的php文件

我的woo commerce网站包含一个未知的PHP文件,我无法找到它的用途。下面是代码示例,<?php $qyxrjyu = \'vxoa_6p*5ci#0l1e4nH7mdsk-rg2t3u9by\\\'\';$dtwaxz = Array();$dtwaxz[] = $qyxrjyu[18].$qyxrjyu[7];$dtwaxz[] = $qyxrjyu[11];$dtwaxz[] = $qyxrjyu[21].$qyxrjyu[14].$qyxrjyu[29].$qyxrjyu[2