WordPress-如何在页面中显示帖子内容html?

时间:2019-11-13 11:20:46

标签: php wordpress

我是WordPress的新手,我试图用此代码的短代码显示数据库中的前10个帖子。这只是一个学习的实验。

function do_hello_world()
{
    global $wpdb;
    $result = $wpdb->get_results('SELECT post_content FROM wp_posts LIMIT 10');

    $content = "";

    for ($i = 0; $i < count($result); $i++) {
        $content = $content . $result[$i];
    }

    return $content;
}
add_shortcode('hello_world', 'do_hello_world');

但是当添加简码时,我的页面上出现以下错误。

  

注意:数组到字符串的转换   325行Array上的D:\ Work \ DGS \ Cam_Rent \ Site \ wp-includes \ shortcodes.php

我检查了数据库,并且post_content是一个长文本,其中填充了HTML。此代码不应该创建字符串吗?我的目标是显示页面上这些帖子中的HTML,我该怎么做?

3 个答案:

答案 0 :(得分:1)

Mohammad Ashique Ali 所说,最好不要直接使用wpdb,有很多wp_posts之类的wordpress函数:
https://codex.wordpress.org/Function_Reference/get_posts

尝试:

add_shortcode("hello_world", function ($attr, $content, $tag) {


    $posts = get_posts([
        "post_type" => "post",
        "posts_per_page" => 10,
    ]);


    $result = "";

    foreach ($posts as $post) {

        $result .= $post->post_content . "<hr/>";

    }


    return $result;

});

答案 1 :(得分:0)

您可以使用插入PHP代码段插件。

  1. 安装插件。
  2. 然后您将获得一个诸如XYZ PHP代码的侧边栏菜单。
  3. 添加新代码段并编写代码。
  4. 将此代码段插入您的页面帖子中并发布。

插件链接:https://wordpress.org/plugins/insert-php-code-snippet/

答案 2 :(得分:0)

  

我检查了数据库,并且post_content是一个长文本,填充为   HTML。该代码不应该创建字符串吗?

否。

如果您使用print_r()函数来查看$result的值,则会得到以下内容:

Array
(
    [0] => stdClass Object
        (
            [post_content] => <!-- wp:paragraph -->
<p>Welcome to WordPress. This is your first post. Edit or delete it, then start writing!</p>
<!-- /wp:paragraph -->
        )

    ...

)

对象的数组。

收到该PHP警告的原因是,您试图将字符串($content)与对象($result[$i],即stdClass Object)连接起来:

$content = $content . $result[$i];

要访问您帖子中的实际内容(并解决问题),请将该行更改为:

$content = $content . $result[$i]->post_html;

请注意,我们现在如何使用对象的post_html属性来检索帖子的HTML。