好的,这是我的尝试,它非常粗糙,最终我无法删除父项的链接/颜色,但父项链接将不起作用。。所以它有点起作用了。
首先创建设置了以下参数的CPT:
$args = array(
\'hierarchical\' => true,
\'public\' => false,
\'show_ui\' => true,
\'show_in_menu\' => true,
\'capability_type\' => \'post\',
\'supports\' => array( \'title\',\'page-attributes\' ),
);
根据需要填写其余内容,这将使您能够在管理中显示父帖子/页面,但不在前端显示,它还允许通过
page-attributes
.
现在,我们可以加入一个过滤器,删除父级的小链接“编辑”、“查看”和“垃圾桶”。
function wpse_95518($actions) {
global $post;
//rename this to your CPT
if ($post->post_type =="parent"){
// check if it\'s a parent
if ( ! (is_post_type_hierarchical(\'parent\') && $post->post_parent )) {
unset( $actions[\'inline hide-if-no-js\']);
unset( $actions[\'trash\'] );
unset( $actions[\'view\'] );
unset( $actions[\'edit\'] );
}
return $actions;
}
return $actions;
}
add_filter(\'page_row_actions\', \'wpse_95518\');
现在事情变得有点奇怪了,删除父标题链接功能来编辑帖子。
function wpse_removetitle_95518($action){
global $post;
if ($post->post_type =="parent"){
if ( is_post_type_hierarchical(\'parent\') && $post->post_parent ) {
return $action;
}else{
return \'#\'; //just in case
}
}
return $action;
}
add_filter( \'get_edit_post_link\', \'wpse_removetitle_95518\');
现在,CPT的父项不应通过管理员中的链接进行编辑,它将显示为
edit.php?post_type=parent#
但是孩子们会没事的。
缺点是父项仍然是一个蓝色链接而不是黑色文本,我找不到任何简单的方法从标题中删除链接,或者通过javascript添加自定义CSS,而不扩展WP List Table
.
当然,您可以使用the_title
筛选,但甚至将其设置为NULL
通过上述条件仍显示< a href=..>
此外,可能还有一种更简单的方法来完成所有这一切,只需使用is_post_type_hierarchical
滤器
Github link to Table Class 标题代码。