首先,不要在过滤器挂钩上使用jQuery、JavaScript或CSS代码。原因过滤器挂钩不是这样设计的。它的设计目的是获取输入修改或操纵输入,并将其返回到输入的位置。所以它没有功能echo
任何东西而且没有echo
表示没有为HTML放置脚本。
其次,您可以将代码分成两部分,并将jQuery和CSS代码放入一个单独的文件中,然后将该脚本文件与admin_enqueue_scripts
或wp_enqueue_scripts
. 这将是一个很长的例子,所以我在这里不提它。请进行一些搜索。我相信你会找到一个例子。
第三,通过将脚本直接挂接到admin_head
或admin_footer
(对于前端wp_head
或wp_footer
). 现在对于您的情况,我假设您需要将其挂接到您的管理后端。所以代码如下-
add_filter(\'attachment_fields_to_edit\', \'the_dramatist_action_button\', 20, 2);
function the_dramatist_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");
return $form_fields;
}
add_action( \'admin_footer\', \'the_dramatist_footer_scripts\' );
function the_dramatist_footer_scripts() {
?>
<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);
//});
// I prefer writing your jQuery code like below.
(function($){
\'use strict\';
$(funtion(){
$(\'.savesend\').on( \'click\', \'input[type=submit]\', function() {
var url = $(this).parents(\'.describe\').find(\'.urlfile\').data(\'link-url\');
var field = $(this).parents(\'.describe\').find(\'.urlfield\');
field.val(url);
});
});
})(jQuery)
</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
}
还要注意,我试图用更好的方法重写jQuery代码。以这种方式编写jQuery代码更好。
注意:我尚未测试此代码。请在上线前进行测试。