如何从所见即所得页面编辑器中删除非管理员的快捷代码

时间:2014-02-20 作者:Derek

标题说明了一切。我们的网站上有一个前端表单,用户可以通过前端提交内容(同时他们也会在这样做时登录)

因为这些短代码将它们自己添加到页面编辑器的内容框中,所以它们又将自己添加到前端表单页面编辑器中。

我的问题是,如何才能最好地将这些短代码按钮从页面编辑器中删除,以防其他非管理员角色出现?

我不知道我是否可以使用条件来检查当前用户角色,如果它不是admin,那么使用remove\\u shortcode()函数?

这听起来是对的还是有更好的方法?

3 个回复
SO网友:Mark Kaplun

短代码是内容,等同于内容中的任何其他文本。没有办法允许一个用户添加一个短代码,同时禁止另一个用户。

唯一可能做的事情是尝试删除任何UI—短代码必须“隐藏”它,但最终唯一真正的解决方案是手动批准不受信任用户提交的每个内容,而不是在批准后给他们编辑它的选项。

另一种方法是在保存时从内容中过滤出短代码。这可能更可靠,但需要将帖子标识为需要过滤的帖子,并限制编辑用户在编辑内容时向该内容插入短代码的能力。

SO网友:Derek

在检查当前用户是否为管理员时,我无法使用remove\\u shortcode,但我的最佳选择似乎是更改插件本身的这一行:

if ( current_user_can(\'edit_posts\') &&  current_user_can(\'edit_pages\') )  {
//do stuff
}
以下是其他人可能会看到的情况:

add_action(\'init\', \'add_button\');  
function add_button() {  
   if ( current_user_can(\'edit_posts\') &&  current_user_can(\'edit_pages\') )  
   {  
     add_filter(\'mce_external_plugins\', \'add_plugin\');  
     add_filter(\'mce_buttons_3\', \'register_button\');  
   }  
} 

function register_button($buttons) {  
   array_push($buttons, "one-fourth", "one-fourth-last" ); //keep adding buttons as needed 
   return $buttons;  
} 

function add_plugin($plugin_array) {  
   $plugin_array[\'quote\'] = get_bloginfo(\'template_url\').\'/library/widgets/shortcode-support.js\';  //the javascript support for appending the short code to content box when clicking icon
   return $plugin_array;  
}

SO网友:Gordon Langley

将此代码添加到函数中。子主题中的php

/*    FLUFFYTECH: HIDE shortcodes ultimate button --------------------------- */

function fluffytech_hide_shortcodes_ultimate_button() {
?><style type="text/css">.su-generator-button {display:none !important;}</style><?php
}
add_action( \'admin_head\', \'fluffytech_hide_shortcodes_ultimate_button\' );

结束

相关推荐

Youtube shortcode

我正在努力使这个短代码起作用,但没有任何成功。所有的尝试都给了我一个白色的方块。 function youtube($atts) { extract(shortcode_atts(array( \"value\" => \'https://www.youtube.com/watch?v=EhWopzlRwZ8\', \"width\" => \'475\', \"height\" => \'350\', \