brasolfilo建议您删除提交元框,这只是我认为完整解决方案的一部分。我可以使用FireBug或其他一些工具在几分钟内将“提交”按钮插入该页面。
我会。。。
卸下元框。这是brasofilo的解决方案,由于代码看起来很好,所以我不会详细说明移除对的所有访问权限post-new.php
对于只应具有只读访问权限的用户的帖子类型更改编辑页面上的“添加新”链接杀死PHP中的帖子提交,以阻止志同道合的人偷偷摸摸以下代码使用\'Book\' post type that can be found in the Codex. 您可以修改它以匹配您的CPT。
删除对的访问权限post-new.php
function conditional_redirect_post_new_wpse_94776() {
global $_REQUEST,$pagenow;
if (!empty($_REQUEST[\'post_type\'])
&& \'book\' == $_REQUEST[\'post_type\']
&& !empty($pagenow)
&& \'post-new.php\' == $pagenow
&& !current_user_can(\'administrator\'))
{
wp_safe_redirect(admin_url(\'edit.php?post_type=book\'));
}
}
add_filter(\'admin_menu\',\'conditional_redirect_post_new_wpse_94776\');
删除“添加新”菜单
function remove_add_new_menu_wpse_94776() {
if (!current_user_can(\'administrator\')) {
remove_submenu_page(\'edit.php?post_type=book\',\'post-new.php?post_type=book\');
}
}
add_action(\'admin_menu\',\'remove_add_new_menu_wpse_94776\');
更改编辑页面上的“添加新”链接
function reset_post_new_link_wpse_94776() {
global $post_new_file,$post_type_object;
if (!isset($post_type_object) || \'book\' != $post_type_object->name) return false;
if (!current_user_can(\'administrator\')) {
$post_type_object->labels->add_new = \'Return to Index\';
$post_new_file = admin_url(\'edit.php?post_type=book\');
}
}
add_action(\'admin_head\',\'reset_post_new_link_wpse_94776\');
防止偷偷摸摸的提交
function stop_submit_wpse_94776() {
if (!empty($_POST) && $_POST[\'post_type\'] == \'book\' && !current_user_can(\'administrator\')) {
if (true === DOING_AJAX) {
exit;
}
if (!empty($_POST[\'post_ID\'])) {
wp_safe_redirect(admin_url(\'post.php?post=\'.$_POST[\'post_ID\'].\'&action=edit\'));
exit;
} else {
wp_safe_redirect(admin_url(\'edit.php?post_type=book\'));
exit;
}
}
}
add_action(\'admin_init\',\'stop_submit_wpse_94776\');
我想我明白了。我一直在测试它,但如果有bug,尤其是在最后一段代码中,我不会感到惊讶,如果有更优雅的方法来做同样的事情,我也不会感到惊讶
排空警告。不退款。