0

首先,我浏览了这个链接http://codex.wordpress.org/Integrating_WordPress_with_Your_Website。我不能用这个。

我正在尝试从我拥有的远程服务器上的 WordPress 安装中获取最新帖子。他们共享同一个数据库服务器,所以我现在就在这里发帖,然后将它带回到我的 PHP 应用程序中。这一切都有效。

不工作的是显示器。在我nl2br用来制作新线之前,但这不起作用。

我注意到 WordPress 会进行一些后期处理,以将p标签添加到他们认为应该是段落的某些行(例如,不在uls 或lis 中)。他们在从数据库中获取帖子后执行此操作(p标签未保存到数据库)。

我试图找出他们在源代码中使用的后处理,但在找到the_content函数等以及$postvar 来自哪里但没有找到我正在寻找的代码后,我出现了空白。

WordPress 使用什么后处理功能来添加这些段落以使他们的帖子看起来不错?

编辑

对于这里的正则表达式或一般 PHP 人员,我希望更改如下内容:

<em><a href="link">awesome link</a></em>
<h3>Awesome Head</h3>
lalalaalal
<ul>
<li>Awesome li</li>
</ul>

变成这样的东西:

<p>
    <em><a href="link">awesome link</a></em>
</p>
<h3>Awesome Head</h3>
<p>lalalaalal</p>
<ul>
<li>Awesome li</li>
</ul>

错过了显然不应该有标签的标签,p比如h和标签。ulli

4

2 回答 2

2

最简单、最快的方法:解析来自 RSS 提要的最新帖子。您会发现<p>自动为您添加的所有标签。

于 2012-09-24T10:50:16.503 回答
0

正如@BryanH 所说,正确的做法是:使用已经为您预先格式化帖子的 RSS 提要。

但是,如果您不想制作 XML 解析器并处理它附带的所有内容只是为了获得博客文章,那么您可以使用类似的东西:

$content = preg_split('/\\r?\\n/', str_replace(']]>', ']]&gt;', $post->content));

foreach($content as $line){
    if(strlen(trim($line)) > 0){
        $line = trim($line);
        if(!preg_match('/^(<|<\/)(ul|li|div|h[1-6])/', $line)){
            echo '<p>'.$line.'</p>';
        }else{
            echo $line;
        }
    }
}

这是我个人最后用来解决这个问题的代码。

可能有一种更健壮、更优雅的方法(快速编码),但是我在一篇非常复杂的博客文章中测试了它,其中包含图像和许多不同的标签,它似乎运行良好,没有任何错误。

我仍然不确定 WP 使用什么,但这最终解决了我的问题。

于 2012-09-24T11:36:39.773 回答