如何仅在选择特色图片时禁用“插入POST”?

时间:2012-10-18 作者:jbx

我希望限制用户在文章中放置内联图像。我正在使用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;
}

2 个回复
最合适的回答,由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;
    }
}

SO网友:Phantasmix

如果您不经常使用特色图像,那么为其设置自定义字段可能会更容易。您在哪里以及如何显示您的特色图像?

你也可以根据用户角色限制媒体上传,但听起来这并不是你所需要的。

结束

相关推荐

images within style sheet

我希望有人能在这方面帮助我,因为这已经开始让我抓狂了。我已经搜索了好几个小时,想找到一种在我的样式表中放置图像路径的方法,但一直没有找到。路径不能是绝对路径或“主题相关”路径。解决问题的唯一方法是在html文件中添加以下内容:<style type=\"text/css\"> #menu .menu-drop .menu-label { background: url(<?php echo get_template_directory_uri().