在根文件夹中按ID自定义帖子类型

时间:2016-04-30 作者:Toskan

我有一个自定义的帖子类型项目

现成的url是:

www.myapp。com/project/POST-ID

www.myapp。com/项目/后期SLUG

现在,我的客户端需要在根地址中提供url。因此,我向函数中添加了以下代码。php

function na_remove_slug( $post_link, $post, $leavename ) {

  if ( \'project\' != $post->post_type || \'publish\' != $post->post_status ) {
    return $post_link;
  }

  $post_link = str_replace( \'/\' . $post->post_type . \'/\', \'/\', $post_link );

  return $post_link;
}
add_filter( \'post_type_link\', \'na_remove_slug\', 10, 3 );


function na_parse_request( $query ) {


  if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query[\'page\'] ) ) {
    return;
  }

  if ( ! empty( $query->query[\'name\'] ) ) {
    $query->set( \'post_type\', array( \'post\', \'project\', \'page\' ) );
  }
}
add_action( \'pre_get_posts\', \'na_parse_request\' );
现在可以了:

www.myapp。com/POST-SLUG

但这不起作用:

www.myapp。com/POST-ID

我有什么办法可以让它工作吗?

1 个回复
SO网友:Caleb

尝试创建自定义重写规则和自定义重写标记。这应该允许您设置正则表达式来捕获ID并操作查询。

重写API/添加重写规则«WordPress Codexhttps://goo.gl/kdEJd8 重写API/添加重写标签«WordPress Codexhttps://goo.gl/PVLzLh

相关推荐

Force pretty permalinks?

我正在构建一个插件,该插件将用于单个站点,并依赖于add_rewrite_rule 要工作,需要打开永久链接。打开它们并不困难,因为它只是一个站点,但我担心其中一个管理员可能会在不知道自己在做什么的情况下关闭它,并破坏该站点。如何以编程方式强制保持漂亮的永久链接?