我有点失望,因为我不知道如何做我需要的事情(我和WP一起工作了很长时间……)
基本上,我需要展示我的艺术作品。每一个作品都是一篇帖子,或者一个页面,或者一个自定义类型(我仍然不知道哪个最适合),我有三类作品,我不会再有更多了。
我的网站上有一个博客,定制的永久链接是:
/博客/%年%/%月%/%日%/%帖名%/
因此,我想它已经消除了帖子类型的假设(我不希望url像:
julienbayle.net/blog ....
我想要这个:
julienbayle.net/works 将我的所有作品显示为公文包页面,只有缩略图作为网格/表格和分页。
julienbayle.net/works/creation 仅在类别创建中显示为缩略图网格
julienbayle.net/works/lab 显示仅在类别实验室中用作缩略图网格
julienbayle.net/works/collab 仅在类别collab中显示为缩略图网格
单击缩略图时,可以看到所考虑的工作,例如:
julienbayle.net/works/collab/work1
julienbayle.net/works/collab/work2
等
我尝试使用名为“works”的自定义类型,但在分页方面遇到了一些问题。因此,我尝试使用基本类别层次结构和页面:
works
-- creation
-- lab
-- collab
但是我不能有好的永久链接+每个作品的链接都是错误的(包含博客帖子的结构)
有人来帮我吗?提前致谢:)
最合适的回答,由SO网友:Milo 整理而成
这对于自定义帖子类型和自定义分类法来说相当简单。
第一register a custom taxonomy worktype
, 将“重写”参数设置为works
:
\'rewrite\' => array( \'slug\' => \'works\' )
接下来,
register a custom post type 将“重写”设置为
works/%worktype%
:
\'rewrite\' => array( \'slug\' => \'works/%worktype%\' )
您还需要设置
with_front
如果你的帖子有一个静态前缀,比如
blog
.
接下来,将过滤器添加到post_type_link
交换%worktype%
每当WordPress输出到单个作品的链接时,为单个作品帖子标记您选择的工作类型:
function wpa_works_post_link( $post_link, $id = 0 ){
$post = get_post($id);
if ( is_object( $post ) && $post->post_type == \'works\' ){
$terms = wp_get_object_terms( $post->ID, \'worktype\' );
if( $terms ){
return str_replace ( \'%worktype%\' , $terms[0]->slug , $post_link );
}
}
return $post_link;
}
add_filter( \'post_type_link\', \'wpa_works_post_link\', 1, 3 );