下面的代码驻留在我的主题函数中。php,并在WordPress内容编辑器的顶部创建一个自定义上载图标,以及默认上载图标。
通过此图标上传的图像在wp\\U Posteta中有一个名为\\u imageTop的特殊标志,用于将其与标准附加图像区分开来(允许我将其作为单独的“附加”图像集合进行特殊处理)。
我有三个问题发生,我相信是简单的修复。
1) “attachment\\u fields\\u to\\u save”过滤器不会应用,即使我可以看到媒体上载中的回声文本。php窗口。我知道这一点,因为只有在我注释掉if(isset)检查时,\\u imageTop元才会写入数据库
2) 上传图像后,我必须单击“保存所有更改”以获取要保存到数据库的\\u imageTop元。理想情况下,我希望上传后立即保存数据,而无需单击“保存所有更改”。这可能是因为attachment\\u fields\\u to\\u save处理程序仅在“保存所有更改”挂钩上激发。尽管如此,我还是想知道如何在上传图像后启动它。
3) 我想从屏幕上删除“插入帖子”链接。
//Upload custom images
function my_customImages($initcontext)
{
global $post;
?>
<script type="text/javascript">
jQuery(document).ready(function() {
var fileInput = \'\';
jQuery(\'#wpe-uploadAttachments\').click(function() {
fileInput = jQuery(this).prev(\'input\');
formfield = jQuery(\'#upload_image\').attr(\'name\');
post_id = jQuery(\'#post_ID\').val();
tb_show(\'my Product Images\', \'media-upload.php?post_id=\'+post_id+\'&type=image&my_idCustomAttachment=true&TB_iframe=true\');
return false;
});
});
</script>
<?php
return $initcontext. \'<input type="hidden" id="post_ID" value="\'. $post->ID .\'" /> Product Images:<a id="wpe-uploadAttachments" href="javascript:;" class="mceButton mceButtonEnabled" onmousedown="return false;" onclick="return false;" title="Click here to upload your product images for this post"><img src="\'.get_bloginfo(\'template_directory\') .\'/img/upload-icon.gif"" /></a>\';
}
add_filter(\'media_buttons_context\', \'my_customImages\');
function my_image_attachment_fields_to_save($post, $attachment) {
update_post_meta($post[\'ID\'], \'_imageTop\', true);
return $post;
}
if(isset($_GET[\'my_idCustomAttachment\'])){
echo "This is true";
add_filter("attachment_fields_to_save", "my_image_attachment_fields_to_save", null , 2);
}
最合适的回答,由SO网友:hakre 整理而成
1) “attachment\\u fields\\u to\\u save”过滤器不会应用,即使我可以看到媒体上载中的回声文本。php窗口。我知道这一点,因为只有在我注释掉if(isset)检查时,\\u imageTop元才会写入数据库
尝试将$\\u GET与$\\u POST交换,看看是否有效。如果是这样,您还需要检查$\\u POST。
2) 上传图像后,我必须单击“保存所有更改”以获取要保存到数据库的\\u imageTop元。理想情况下,我希望上传后立即保存数据,而无需单击“保存所有更改”。这可能是因为attachment\\u fields\\u to\\u save处理程序仅在“保存所有更改”挂钩上激发。尽管如此,我还是想知道如何在上传图像后启动它。
如果它没有被激活,你唯一能做的就是自己激活它,例如直接调用hook函数。如果这是不可能的(例如,您没有执行的代码,因此无法执行其他代码),那么您需要寻找另一个可以挂接的操作,例如上载后被触发的操作。当图像保存到媒体库中时,可能存在一些挂钩。然后,您还可以存储自定义帖子字段(!)进入数据库。只是为了保存它。我不知道WP是否能够用它的修订系统来处理这个问题,所以你需要试试。
3) 我想从屏幕上删除“插入帖子”链接。
我不知道如何才能做到这一点,你应该检查核心代码,如果有什么东西可以通过钩子重写。