问题描述

有没有办法将页面的创建 (自定义帖子类型) 限制到特定的深度 – 例如 1 级 (其中 0 =父,1 =小孩,2 = grand-child 等)?

例如,让我们创建一个’Summer’ 配方页面 (自定义帖子类型:配方),带有一个’/summer’ 。现在我们来创建一个’Pie’ 页面 (‘Summer’ 的一个小孩),带有一个’/summer/pie’ 。我想阻止用户创建一个作为’Pie’ 或任何其他 sub-page 的孩子的页面。

  • example.com/summer – > 好

  • example.com/summer/pie – > 好

  • example.com/summer/pie/apple – > 坏

  • example.com/summer/pie/blackberry – > 坏

谢谢。

最佳解决方案

function my_test($a) {
  $a['depth'] = 1;
  return $a;
}
add_action('page_attributes_dropdown_pages_args','my_test');

将它放在主题的 function.php 或插件中。

次佳解决方案

以下过滤器仅显示页面属性下拉列表中的 top-level 自定义帖子类型项目 (主编辑屏幕和快速编辑) 。用您的自定义帖子类型名称替换’my_custom_post_type’ 。

function my_test($args) {
    global $post_type_object;

    if ( $post_type_object->name == 'my_custom_post_type') {
        $args['depth'] = 1;
    }
    return $args;
}
add_filter('page_attributes_dropdown_pages_args','my_test');
add_filter('quick_edit_dropdown_pages_args', 'my_test');

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。