我希望限制用户在文章中放置内联图像。我正在使用Wordpress Attachments 插件,允许用户附加图像,然后我按照自己的方式定位和样式化图像。
我还通过在我的函数中添加一个挂钩,成功地从帖子中删除了上传/插入链接。我的主题的php。(感谢您的回答here.)
然而,我注意到,当用户按下“设置特色图片”链接时,“插入帖子”链接仍然存在。我想让他设置一个特色图片,但不插入帖子。
我尝试了我找到的另一个解决方案(颠倒逻辑here) 并添加了此功能:
add_filter( \'get_media_item_args\', \'force_send\' );
function force_send($args)
{
$args[\'send\'] = false;
return $args;
}
它会执行此任务并禁用“插入帖子”按钮,但另一方面它也会停止附件插件的工作(附加按钮消失),并且使用相同图像上传对话框的其他插件也会停止工作。
是否有任何方法可以检测到功能中单击了“设置特色图像”链接force_send()
这样,我只有在用户单击设置特色图像时才禁用该按钮?
或者,有没有更好的方法阻止用户将图像放入WYSIWYG编辑器?似乎没有任何权限设置可以阻止用户这样做。
UPDATE (ACTUAL SOLUTION)
我只想发布我的解决方案,基于下面的答案,只是为了完整性,以防任何人需要它。它还隐藏了“插入帖子”按钮。
add_filter( \'get_media_item_args\', \'force_send\' );
function force_send($args)
{
// for the media upload popup we get the Post ID from the $_GET URL parameter list
$post_id = $_GET[\'post_id\'];
// with post ID in hand we now get current post_type
$post_type = get_post_type($post_id);
// define list of our restricted post_types
$restricted = array(\'post\', \'page\');
// check current post_type against array of restricted post_types
if (in_array($post_type, $restricted))
{
// if our current post_type as returned from get_post_type is in array
// we return false to void inserting image into post editor
$args[\'send\'] = false;
}
return $args;
}
最合适的回答,由SO网友:Adam 整理而成
你可以通过,
add_filter(\'image_send_to_editor\', \'restrict_images\');
function restrict_images($html){
return false;
}
。。。现在考虑上面的函数原语,因为它将限制所有帖子类型的图像。我们可以在
post_type
通过
post_type
这样的基础,
add_filter(\'image_send_to_editor\', \'restrict_images\');
function restrict_images($html){
// check if its the admin trying to insert image, if so, quickly
// return the image to the editor and do not run remainder of function
if(current_user_can(\'activate_plugins\'))
return $html;
// global $post and $wp_query not available so we use $_POST[\'key\']
$post_id = $_POST[\'post_id\'];
// with post ID in hand we now get current post_type
$post_type = get_post_type($post_id);
// define list of our restricted post_types
$restricted = array(\'post\', \'page\');
// check current post_type against array of restricted post_types
if (in_array($post_type, $restricted)) {
// if our current post_type as returned from get_post_type is in array
// we return false to void inserting image into post editor
return false;
} else {
// if our post_type does not exist in restricted array, carry on as normal
return $html;
}
}