我正在使用工具集类型,并想知道设置网址是多么容易。
我有一个自定义的帖子类型的场地,我有一个自定义类别的位置分类。
目前,网址就像
一样http://domain.com/venue/location/manchester/
http://domain.com/venue/manchester/the-venue-name/
但我希望网址的结构类似于
http://domain.com/manchester/
http://domain.com/manchester/the-venue-name/
我需要在哪里进行这些更改?
这都是.htaccess工作还是可以在永久链接部分完成?
提前致谢
答案 0 :(得分:0)
如果我理解正确,这个黑客必须在你的模板中工作。 首先,我们必须从网址 Slug 中删除帖子类型名称。
function ft_remove_postType_slug_fromUrl( $post_link, $post, $leavename ) {
if ( 'venue' != $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', 'ft_remove_postType_slug_fromUrl', 10, 3 );
但这本身不会起作用。如果你在你的函数中使用这段代码。你应该得到404错误。因为WordPress只希望帖子和页面以这种方式行事。
因此,您还必须添加此操作。
function ft_change_parsingRequest( $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', 'venue', 'page' ) );
}
}
add_action( 'pre_get_posts', 'ft_change_parsingRequest' );
在此之后,您续订/刷新您的帖子类型/固定链接树(我猜它会调用flush_rewrites。),这意味着,重新更新管理面板区域的永久链接设置。
或者如果你想看到或做一些魔法,你可以从源网址查看。
https://core.trac.wordpress.org/browser/tags/4.3/src/wp-includes/post.php#L1454
这条线说;
add_permastruct( $post_type, "{$args->rewrite['slug']}/%$post_type%", $permastruct_args );
快乐编码。