显示另一个数据库中的数据

时间:2015-01-28 作者:Christian D.

我正在开发自定义插件,该插件将从非wordpress数据库中提取属性信息。这很好用。我遇到的问题是让整个前端部件正常工作。

我有一个名为property(url:http://localhost/property). 在存档属性上。php我有一个php函数,可以拉入x属性(我想知道如何去掉archive-property.php,但它现在可以工作了)。

在存档属性上。php页面我有一个如下链接:http://localhost/property/12345/ 其中数字是MLSID。我能够在以下功能中捕获该信息:

function single_property() {

    if (is_singular() ) {
        echo "We ARE singular!<br/>";
        $uri = $_SERVER[\'REQUEST_URI\'];
        $data = explode(\'/\',$uri);
        echo ("MLS ID is: ".$data[\'2\']);
        die();

    }

}
add_action(\'pre_get_posts\',\'single_property\');
如果我不添加“die()”语句,它会给我一个找不到的页面(不是404,而是“error”页面,消息为:Oops!找不到该页面。)

我希望这一切都是有意义的,因为我现在并不是百分之百地在寻找什么。

谢谢你的时间。

2 个回复
SO网友:Rarst

这就是你的问题——WordPress需要理解URL吗。否则它实际上是404,因为它与WP“知道”的任何内容都不对应。

您需要创建这种理解,例如使用Rewrite API. 此外,由于您的数据是外部的,并且实际上不是WP上下文的一部分,因此最终可能还需要覆盖404决策。

SO网友:Anton Timmermans

在办公室,我们结合使用重写规则和添加自定义函数template_redirect

可以使用的重写规则如下(未测试):

add_rewrite_rule( \'property/([0-9]+)/?\', \'index.php?property=$matches[1]\', \'top\' );
你当然需要flush the rewrite rules, 那一页有很好的例子。Don\'t do this on every pageload!

然后,您可以使用template_redirect:

add_action( \'template_redirect\', \'prefix_route_property_pages\' );
function prefix_route_property_pages() {
    $property = get_query_var( \'property\' );

    if ( ! empty( $property ) ) {
        // Do awesome stuff, preferably call a function: prefix_do_awesome_stuff()

        // You need this to overwrite WordPress\'s 404
        global $wp_query;
        $wp_query->is_404 = false;

        status_header( 200 );
    }
}
您必须自己呈现一些html。如果要包含主题中的页面,可以使用locate_template. 注意这一点,因为WordPress的标准变量设置不正确,一些主题可能会因此而崩溃。

结束

相关推荐

如何使用wpdb按标题获取条目

我已经通过metabox创建了一个表单,并将数据保存在自定义表中我的桌子是:$table_name = $wpdb->prefix . \'aacv\'; $sql = \"CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, user_id int(20) Not Null, name varchar(255) collate utf8_unicode_ci NOT NU