帖子的url结构应为example.com/group_name/news/post_name
他们还希望每个小组都有自己的菜单、徽标和子页面,如example.com/group_name/about
我也不能真正使用wordpress的多站点选项,因为主页有点像一个全球中心,也就是说,所有组的东西都会被拉到那里。例如,所有组中的最新新闻都需要分页,等等。还需要一个页面,如example.com/news
您可以筛选出感兴趣的群体等First approach:
我从创建自定义组分类法开始:register_taxonomy(
\'groups\',
[\'post\', \'user\'],
[
\'public\' => \'true\',
\'labels\' => $labels,
\'hierarchical\' => true,
\'capabilities\' => [
\'manage_terms\' => \'edit_users\',
\'edit_terms\' => \'edit_users\',
\'delete_terms\' => \'edit_users\',
\'assign_terms\' => \'edit_users\',
]
]
);
然后我创建了一些基本的重写规则:$groups = get_terms([
\'taxonomy\' => \'groups\',
\'hide_empty\' => false
]);
foreach ($groups as $group) {
add_rewrite_rule($group->slug . \'/?$\', \'index.php?&pagename=group&groups=\' . $group->slug, \'top\');
}
add_rewrite_rule(\'([^/]*)/news/?$\', \'index.php?post_type=post&groups=$matches[1]\' , \'top\');
add_rewrite_rule(\'([^/]*)/news/([^/]*)/?$\', \'index.php?groups=$matches[1]&name=$matches[2]&post_type=post\' , \'top\');
和设置自定义链接创建:function __custom_post_link($link, $post, $leavename = true)
{
$terms = get_the_terms($post, \'groups\');
if (!$terms) return $link;
$term = $terms[0]->slug;
if ($post->post_type == \'post\') {
$link = str_replace($post->post_name, $term .\'/news/\' . $post->post_name, $link);
}
return $link;
}
add_filter(\'post_type_link\', \'__custom_post_link\', 10, 3);
但我在这里停了下来,因为我觉得使用自定义可能更好post_type
相反因为我必须在group hub页面上显示一些附加信息,所以我可能必须存储一些post meta信息。在我看来,使用自定义帖子类型来解决基本的路由问题会更容易example.com/group_name
. 还可以将页面设置为自定义帖子的子级,对吗?如果是这样的话example.com/group_name/news
.Question:当创建一个以一组具有上述要求的组为中心的系统时,您认为使用自定义分类法或自定义帖子类型更好吗?还是有更好的方法?