此代码可以工作,但会破坏媒体上传器。我如何以一种不会的方式集成它?

时间:2017-08-31 作者:MarvinLazer

我编写了一些自定义代码,并使用过滤器将其粘贴到媒体上载面板中。它可以做几件事。首先,它为通过上传器添加内容的用户更改“提交”按钮的文本。其次,它使文件URL字段的内容自动输入通过媒体上传器上传图像时我创建的表单的图像上传输入。(这就是JQuery)。最后,还有CSS来隐藏用户不需要看到的媒体上传器的元素。

当此函数位于函数中时。php文件,它会导致媒体库在加载图像时暂停。它只是挂在旋转的灰色球上。但它也起作用。

如何将此代码集成到站点中,而不使媒体上传程序无法工作?

add_filter(\'attachment_fields_to_edit\', \'my_plugin_action_button\', 20, 2);

function my_plugin_action_button($form_fields, $post) {

  $send = "<input type=\'submit\' class=\'button\' name=\'send[$post->ID]\' value=\'" . esc_attr__( \'Use Photo\' ) . "\' />";

  $form_fields[\'buttons\'] = array(\'tr\' => "\\t\\t<tr class=\'submit\'><td></td><td class=\'savesend\'>$send</td></tr>\\n");
  ?>

  <script>
    jQuery(\'.savesend input[type=submit]\').click(function(){  
      var url = jQuery(this).parents(\'.describe\').find(\'.urlfile\').data(\'link-url\');
      var field = jQuery(this).parents(\'.describe\').find(\'.urlfield\');
      field.val(url);
    });
  </script>
  <style>
    #media-head-125, #imgedit-response-125, .savebutton.ml-submit, .image-size, .align, .post_content, .post_excerpt, .image_alt, .post_title.form-required, .media-types.media-types-required-info, .url {
      display: none !important;
    }
  </style>

  <?php
  return $form_fields;
}

2 个回复
SO网友:Sebastian Kurzynowski

检查媒体html元素是否具有上一个classes, 可能您从媒体窗口中删除了一些类(我猜是按钮)和一些js functions 不能像这样触发hide().

SO网友:T.Todua

我认为您只需更改两个位置(见箭头):

....
$form_fields[\'buttons\'] = array(\'tr\' => "\\t\\t<tr class=\'submit\'><td></td><td class=\'savesend mySender123\'>$send</td></tr>\\n");
?>
                                                                                                 ⇧⇧⇧ 
<script>
jQuery(\'.mySender123 input[type=submit]\').click..................
            ⇧⇧⇧ 
......

结束