远程内容页面的自定义固定链接结构

时间:2014-12-26 作者:Manuel Vicedo

我正在尝试创建一个WordPress站点,该站点与远程服务器中非常特定的CRM集成。CRM包含许多应该在网站上显示的条目,但如果可能的话,我希望避免将它们导出和导入WordPress。

相反,WordPress站点必须能够接受自定义永久链接,例如:

http://mysite.com/property/4573

然后从远程服务器检索ID为4573的条目。现在,检索本身很简单,但是定制permalink呢?

理想情况下,WordPress会检测“property”关键字,然后加载一个特定的模板来完成所有繁重的工作。有了这个ID,我就可以执行一个请求,并将所有生成的数据样式化为一个页面,而无需使用post类型。

?我如何创建这样一个永久链接结构,并让WordPress在主题模板中检测到它?

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

我认为你的问题有几种解决方法。如果您不想在WP数据库中为每个远程项目都有一个条目,一个可能的解决方案是使用property slug并添加重写规则以获取ID号:

add_action( \'init\', \'cyb_property_rewrite_rule\' );
function cyb_property_rewrite_rule() {
    add_rewrite_rule( \'^property/([0-9]{1,})/?$\', \'index.php?pagename=$matches[1]&remote_ID=$matches[2]\', \'top\' );
}
//Add remote_ID to vars pool to be recognized by WordPress
add_filter(\'query_vars\', \'cyb_add_query_vars\');
function cyb_add_query_vars( $vars) {
    $vars[] = "remote_ID";
    return $vars;
}
现在,要检索的项目的ID存储在remote_ID 可以通过的查询变量get_query_var:

$item_ID = get_query_var(\'remote_ID\');
您可以创建page template 对于该页面,您可以在内容中获得远程项目:

<?php
/*
Template Name: Property Page Template
*/
get_header();
?>

<div id="content">
    <?php
    $remote_item = cyb_get_the_property();
    ?>
</div>

<?php
get_footer();
?>
cyb_get_the_property() 您可以获取数据:

function cyb_get_the_property() {
    $item_ID = get_query_var(\'remote_ID\');
    //Itegrate with the remote CMR API
    $item_data = \'\';
    return $item_data;
}

SO网友:vlood

您可以创建一个具有slug“属性”的父页面,并且所有远程页面都是其子页面,slug与其id相同。这对您有意义吗?

如果您使用带有slug“属性”的自定义post类型的解决方案,您可能会遇到这些数字slug的问题,因为我不太确定WordPress是否会尝试获取本地id作为远程页面id的条目(这是错误的)。

结束

相关推荐

WP-API自定义发布类型json_no_route

我已经创建了一个自定义post类型并扩展了文档中的WP\\u JSON\\u CustomPostType类,当我转到WP-JSON/时,我可以看到自定义类型,但只要我转到WP-JSON/就会发现这个错误,任何帮助都会很好。PS:我是插件开发新手。register_post_type(\'quiz\', array( \'labels\' => array( \'name\' => __( \'Quizes\' ),&#x