在外部页面上使用WordPress功能

时间:2013-07-12 03:17:18

标签: php wordpress

所以我需要从我的主WordPress站点获取一些数据并在外部页面上使用它。

我的WordPress网站位于我的域的根目录,而外部页面位于/community/library/somethingelse/page.php

无论如何,我使用以下代码来访问函数

<?php require('/path/to/my/wp-blog-header.php'); ?>

当我尝试访问page.php

时,使用此方法会出现以下错误

This Plugin Requires WordPress 3.1+ or Greater: Activation Stopped!

如果某人有可能的解决方案,那就太棒了!

确实没有满足这个问题的答案。如果有人能够弄清楚为什么会发生这种情况以及如何克服它,那就太好了。我仍然想使用WordPress功能,不想直接访问数据库。

1 个答案:

答案 0 :(得分:1)

我不久前需要做同样的事情,如果不在你的项目中加入大量“不必要的”文件,就很难绕过警告。

我说的是“不必要的”,因为你确实需要它们,但仅仅将一些数据提取到你的应用程序中就太多了。

如果可能,在我的环境中,我这样做的方法是直接查询数据库,例如,如果您需要访问帖子,则查询wp_posts表。

如果您需要为每个用户提取帖子,那么您应该能够直接查询数据库。安全方面,您必须清理所有输出,例如在php中使用htmlentities

这是当前版本的PHP的数据库架构(可能与您的版本不同)

http://codex.wordpress.org/File:WP3.0-ERD.png

类似的东西:

SELECT * FROM wp_posts WHERE post_author = 1

应该为您提供admin用户撰写的所有帖子。

您可以包含wp_config.php以访问您的数据库凭据,然后使用PDO(或mysqli)以这种方式连接到您的数据库:

require('path/to/wp_config.php');
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$sql = "SELECT post_date, post_title, post_content FROM wp_posts WHERE post_author = ?";
$statement = $mysqli->prepare($sql);
$statement->bind_params("i", $user_id);
$statement->bind_result($post_date, $post_title, $post_content);
$user_id = 1;
$statement->execute();
while($statement->fetch() {
    echo "{$post_date}\n{$post_title}\n{$post_content}";
}
$statement->close();
$mysqli->close();

如果您之前没有使用过mysqli,可以在以下两个链接中阅读更多相关内容:

http://www.php.net/manual/en/mysqli.quickstart.connections.php

http://www.php.net/manual/en/mysqli-stmt.fetch.php

另外一些帖子可能包含bb标签,富文本以及Wordpress为您处理的一堆其他不同的东西,但如果您直接查询数据库,则必须将HTML标签列入白名单(如h1),以及甚至写一个BB代码解析器。

一个很好的选择是创建一个空白的Wordpress模板,然后通过iframe将其包含在您的应用程序中。

但是,要实现这一目标,您可能需要使用相同的数据库配置创建wordpress博客的副本,以便在同一博客上激活两个模板。 “空白”模板将在用户视图中隐藏。

另一种选择是编写RSS阅读器,但我不确定是否可以为每个用户提取RSS源。