WordPress重写-如何将变量传递给Custom Post Type?

时间:2013-04-29 作者:MikeGWP

我正在寻找wordpress重写,它可以让我传递一个查询变量。我有一个自定义的帖子类型,可以生成如下URL:

实例com/自定义帖子slug/自定义帖子标题/

我的目标是

实例com/custom post slug/custom post title/cid/10/

将值10传递到cid

有什么建议吗?

3 个回复
SO网友:Milo

您可以使用add_rewrite_endpoint, 这将添加查询变量并生成必要的重写规则:

function wpd_cid_endpoint() {
    add_rewrite_endpoint( \'cid\', EP_PERMALINK );
}
add_action( \'init\', \'wpd_cid_endpoint\' );
别忘了flush rewrite rules 更改规则后。您可以通过访问管理中的设置>永久链接页面快速完成此操作。

SO网友:guidod

您需要创建一个自定义重写规则,不仅映射post slug,还映射cid值,请参阅本文:

http://www.prodeveloper.org/create-your-own-rewrite-rules-in-wordpress.html

以及相关的Codex文件:

http://codex.wordpress.org/Rewrite_APIhttp://codex.wordpress.org/Rewrite_API/add_rewrite_rule

I\'m assuming you don\'t want to use query strings, 因为在这种情况下,使用此URL就很容易:

example.com/custom-post-slug/custom-post-title/?cid=10

以这种方式获取值:

$cid=isset($_GET[\'cid\'])?$_GET[\'cid\']:false;

然而,请记住/param\\u name/param\\u value/语法在语义和SEO方面不是最好的。URL应该是分层的。

虽然最“纯粹”的解决方案是使用?param\\u name=param\\u值。

SO网友:iambriansreed

在你的init callback:

add_rewrite_rule(
    \'^custom-post-type-slug/([^/]*)/cid/([^/]*)/?\',
    \'index.php?custom-post-type-slug=$matches[1]&cid=$matches[2]\',
    \'top\'
);

add_rewrite_tag(\'%cid%\', \'([^&]+)\');
然后,可以使用以下内容获取cid变量值:

global $wp_query;
$wp_query->query_vars[\'cid\']
我使用了以下功能:

http://codex.wordpress.org/Rewrite_API/add_rewrite_rulehttp://codex.wordpress.org/Rewrite_API/add_rewrite_tag

结束

相关推荐