php - 从短代码函数内部调用 WordPress get_template_part 首先呈现模板

标签 php wordpress shortcode

我有一个页面,我需要允许用户输入一段文本。然后在该文本之后,插入一个将呈现帖子列表的短代码,然后在之后添加更多自由格式的文本。我的想法是他们应该能够插入一个短代码来输出帖子。这样他们就可以简单地在他们希望帖子出现的地方添加简码。

我目前有逻辑来检索在其自己的文件中分开的帖子。目前,我通过简单地使用 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/

相关文章:

php - Wordpress 3.9.x - 从图形元素中删除内联宽度

javascript - 如何在 JS 中单击省略号时在模式中显示整个文本?

php - 使用 jdbc 或类似的东西的 Android 数据库连接

javascript - PHP 限制输入字段的字符数

html - Wordpress Ninja 表格 CSS 样式

php - Wordpress:使用函数 get_post_field() 获取帖子内容时,简码不起作用

php - 发帖到错误的类别

php - 我可以使用 <input type ="button"/> 提交表单值吗?

wordpress - 如何从 WordPress 简码结果中删除多余的 <p> 和 <br/>

php - 问题在 Wordpress 的简码内返回一个函数