为所有用户和管理员设置管理员编辑面板和元框的位置和可见性


10

我的WP 3.3设置涉及几种帖子类型和带有Advanced Custom Fields插件(可创建许多metabox)的自定义编辑面板,以及其他插件,例如SEO metabox面板,Scribu的Posts2Posts连接等等。

问题是,这些面板的外观顺序通常是相当随机的(即使“高级自定义字段”提供了某种顺序,但它并不总是有效,因为其他插件没有这种顺序,此外,我可能想更改元框职位类型)。

现在,Wordpress允许具有适当权限的每个管理员/用户以他/她想要的方式在编辑面板中排列元框。但是...每个管理员都必须安排自己的!! 是否没有办法准备默认/固定订购或让超级管理员或特别是一位管理员为每个人设置面板位置?

我至少有4位管理员,很少有编辑/作者...我必须设置他们的面板并使用每个帐户登录,这是没有道理的。这既愚蠢又耗时,并且使非Wordpress精明的用户感到困惑。

是否有任何插件或代码段可以帮助解决我的问题?

谢谢


有人问了WP论坛同quetsions 1年前,留下了没有回答他的话题,没有得到解决,有些管理员关闭线程wordpress.org/support/topic/...
unfulvio

Answers:


7

您可以使用remove_meta_box删除默认元框,然后使用add_meta_box将它们重新添加到其他位置:

add_action('do_meta_boxes', 'wpse33063_move_meta_box');

function wpse33063_move_meta_box(){
    remove_meta_box( 'postimagediv', 'post', 'side' );
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

上面的答案来自以下线程:如何更改WP meta box的默认位置?

更新

如果主要的挫败感纯粹是可用的元框的数量,并且您不认为每个用户都需要所有元框,则可以使用添加到functions.php文件中的以下代码将它们隐藏在低级用户角色或所有角色中。注意-此方法仅隐藏meta框,而不会停用或删除它们。

//Hide Post Page Options from all except Administrator
if (!current_user_can('administrator')){
function hide_post_page_options() {
global $post;
$hide_post_options = "<style type=\"text/css\"> #wptotwitter_div, wpseo_meta, #al2fb_meta, #misc-publishing-actions .misc-pub-section label, #misc-publishing-actions .misc-pub-section #post-status-display, #misc-publishing-actions .misc-pub-section .edit-post-status, #visibility.misc-pub-section, .al2fb_post_submit, #slugdiv, #edit-slug-box, #screen-options-link-wrap { display: none; }</style>";
print($hide_post_options);
}
add_action( 'admin_head', 'hide_post_page_options'  );
}

//Hide Post Page Options from ALL users
function hide_all_post_page_options() {
global $post;
$hide_all_post_options = "<style type=\"text/css\"> #taxonomy-category li.hide-if-no-js, #commentstatusdiv, #wypiekacz_sectionid, #postexcerpt, #trackbacksdiv, #postcustom, #yarpp_relatedposts { display: none !important; }</style>";
print($hide_all_post_options);
}
add_action( 'admin_head', 'hide_all_post_page_options'  );

基本上,您只需要输入以逗号分隔的div ID或类。我只是把我的留在那儿,以表明可以隐藏各种元框和区域。

#wptotwitter_div - WP to Twitter plugin
#wpseo_meta - Wordpress SEO by Yoastplugin
#al2fb_meta, .al2fb_post_submit - Add Link to Facebookplugin
#misc-publishing-actions .misc-pub-section label, #misc-publishing-actions .misc-pub-section #post-status-display, #misc-publishing-actions .misc-pub-section .edit-post-status, #visibility.misc-pub-section - Default Wordpress Publish Status and Visibility
#slugdiv, #edit-slug-box - The post slug
#screen-options-link-wrap - The "Screen Options" tab at the top of the page
#taxonomy-category li.hide-if-no-js - The "Most Used" categories tab
#commentstatusdiv - The comments on the post
#wypiekacz_sectionid - Wypiekacz plugin
#postexcerpt - Post excerpt
#trackbacksdiv - Trackbacks
#postcustom - Custom post fields
#yarpp_relatedposts - Yet Another Related Posts Plugin

(我将示例放在“代码”中,因为SE使用#表示标题)

我以为我会把这个扔给你,因为像你一样,我对所有的元框都感到非常沮丧,但最终我认为那是大量不需要的框。对于我网站上的“作者”,现在已非常精简:标题,内容,另存为草稿,立即发布或计划发布,标签,类别和特色图片...一点也不混乱。


那并不能解决我的问题,想这样做将我的所见即所得设置复制给所有用户(因此,我一劳永逸地设置面板的外观);原因:某些插件添加了自己的元框;另外,对于不同的帖子类型,我想相应地放置元框。Add_meta_box仅具有正常/较高/较低...以及许多无济于事的元框。高级自定义字段至少具有订购号,但是在存在其他元框的情况下不能很好地工作。最好的方式是
wysiwyg

您是否使用并需要插件创建的所有其他元框?我问是因为,对我而言,所有不需要的meta框总是让我感到沮丧。如果这实际上是您的情况,那么我在上面进行了更新,也许如果您仅隐藏某些用户角色不需要的框,则可以消除您的问题……这确实对我有用!
特拉维斯·弗朗茨

为什么不按用户删除元框,而不是简单地使用样式隐藏它们?
Stephen Harris

并非我删除的所有内容都是元框,有些不是元框的一部分,所以我认为我只会使用一个函数,而不是两个。
特拉维斯·普弗兰兹

特拉维斯(Travis),谢谢您为此花费更多。但是,CSS解决方案不能解决移动元框的问题(您以前的过滤和重新定位解决方案可以解决此问题)。正如我之前提到的,我的设置中有许多带有特殊metabox的自定义帖子类型,我必须将其放置在那里。实际上,我想隐藏的人很少(但是它们对某些管理员很有用,所以我不想永久删除它们,而用CSS隐藏不是一个好办法)。我尚未找到令人满意的解决方案。无论如何,谢谢您的努力。
unfulvio

1

您是否研究过Adminimize插件?

它允许您根据用户角色激活/停用元框,​​还可以配置位置。配置它需要一点时间,并且文档虽然不错,但位置还算不错,但它应该能够处理您所描述的内容。


该插件也不会允许你“配置位置”,只有知名度。这是一个非常不错的插件,
等等。– frnhr

我承认,我并没有对插件进行过仔细的研究,但是如果它可以操作一个插件,那么可以通过添加一些代码来使它能够操作另一个插件。为一个不错的发射点。
JCL1178
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.