【问题标题】:Wordpress custom post type change permalink queryWordpress 自定义帖子类型更改永久链接查询
【发布时间】:2022-01-01 02:05:47
【问题描述】:

我的永久链接规则设置为帖子名称。我创建了一个自定义帖子类型,名为:house。
默认网址为:{{site_url}}/house/{{house_slug}}
现在我想更改房屋网址的使用方式,我希望它接受以下内容: /house/param1:value1/param2:value2/param3:value3

我希望pre_get_posts 方法中使用的查询对象包含帖子类型(房屋)和发送的参数。

我尝试了以下 1 对 1 的重写规则,但没有一个可以正常工作:

add_rewrite_rule('^house/([a-z0-9-]+)[/]?$', 'house/$matches[1]', 'top');
add_rewrite_rule('^house/(.*)[/]?$', 'house?test=$matches[1]', 'top');
add_rewrite_rule('^house/([^/]+)/?$', 'index.php?post_type=house&name=$matches[1]', 'top');

【问题讨论】:

标签: wordpress url-rewriting permalinks


【解决方案1】:

如果您愿意接受 /house 之后的任何内容,您可以使用:/([^/]+)/。所以你的最后一个应该是它:add_rewrite_rule( 'house/([^/]+)/?$', 'index.php?post_type=house&name=$matches[1]', 'top' );

通过在 WordPress 中重新保存永久链接来刷新重写规则很重要:设置 -> 永久链接 -> 保存。

这应该可以解决问题。

您可以通过导出您的规则(在functions.php中)来检查这一点:

add_action( 'parse_request', 'debug_404_rewrite_dump' );
    function debug_404_rewrite_dump( &$wp ) {
        global $wp_rewrite;

        echo '<h2>rewrite rules</h2>';
        echo var_export( $wp_rewrite->wp_rewrite_rules(), true );
}

【讨论】:

  • 当我使用它时,它仍然会显示为:[attachment] =&gt; params2:value2 而不是同时具有参数 1 和 2,并且 wp_query 不包含用于识别当前帖子类型的帖子类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 2012-02-22
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
相关资源
最近更新 更多