我有一个页面,我需要允许用户输入一段文本。然后在该文本之后,插入一个将呈现帖子列表的短代码,然后在之后添加更多自由格式的文本。我的想法是他们应该能够插入一个短代码来输出帖子。这样他们就可以简单地在他们希望帖子出现的地方添加简码。
我目前有逻辑来检索在其自己的文件中分开的帖子。目前,我通过简单地使用 get_template_part()
函数将其包含在页面中:
get_template_part('donation', 'posts');
我研究了如何创建短代码并将以下代码包含到我的 functions.php
文件中以创建短代码:
add_shortcode('donation-posts', 'fnDonatePosts');
function fnDonatePosts($attr, $content)
{
get_template_part('donation', 'posts');
}
donation-posts.php
正在正确执行并且帖子正在出现,但是,它们始终位于内容之前,而不是放置短代码的位置。
我已经尝试删除 get_template_part()
函数并只输出一些文本并且工作正常。所以我知道 get_template_part()
可能不是执行此操作的正确方法,但是,我无法找到一种方法来做我想做的事情(我确信有是一种方式......我只是还没有找到它)。
我试过:
include(get_template_directory(). '/donation-posts.php');
include_once(get_template_directory(). '/donation-posts.php') :
但是一旦它们命中包含文件中的 PHP 代码,它们就会停止处理。
我也试过:
$file = file_get_contents(get_template_directory(). '/donation-posts.php');
return $file;
但这只会返回文件的内容(如函数名称所示),这意味着它不会执行 PHP 脚本来返回帖子。
以前有人做过吗?
最佳答案
你可以试试这个,它可能会解决你的问题,因为 get_template_part
基本上像 PHP 的
require
一样 react ,它不返回但回显内容立即在它被调用的地方。
add_shortcode('donation-posts', 'fnDonatePosts');
function fnDonatePosts($attr, $content)
{
ob_start();
get_template_part('donation', 'posts');
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}
关于php - 从短代码函数内部调用 WordPress get_template_part 首先呈现模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12325348/