自定义帖子类型:禁用单页,但保留存档

时间:2021-09-24 作者:ProxxiM

我正在寻找创建自定义帖子类型的最佳方法,这些帖子类型仅用作其帖子的存档。例如,我想要一个显示公司所有员工的档案,但我不希望员工有一个单一的页面。这是我多次偶然发现的一个用例,但从未找到完美的解决方案。

主要要求如下:

禁用帖子的单一视图我发现的所有方法都无法满足上述所有要求。

通过将过滤器设置为template_redirect 对于单个页面,指向单个页面的链接仍在WordPress中显示(可能在网站地图等中显示),这让最终用户感到困惑。

按设置publicly_queryablefalse 后端中的链接已删除,但archive 页面,即使has_archive 设置为true. 这可以通过使用页面模板创建一个页面来解决,该页面模板从帖子类型加载帖子。但这也不理想。

1 个回复
SO网友:ProxxiM

我已经“修复”了下面代码的问题。这是一个检查post类型设置的函数。如果query_var 已设置为false, 查看按钮将从后端的post类型存档中删除。

对于我的用例,这解决了问题。这些帖子再也没有链接了。

为什么两者都post_row_actionspage_row_actions 正在使用,是因为帖子类型hierarchical 设置为false 穿过第一个,否则穿过第二个。

function modify_list_row_actions( $actions, $post ) {
    // Retrieve the post-type object
    $post_type_object = get_post_type_object(get_post_type($post));

    // check if query_var has been set to \'false\'
    if ($post_type_object->query_var == false) {
        // if so, removing the \'view\' link
        unset($actions[\'view\']);
    }

    return $actions;
}
add_filter( \'post_row_actions\', \'modify_list_row_actions\', 10, 2);
add_filter( \'page_row_actions\', \'modify_list_row_actions\', 10, 2);

相关推荐