上载图像时,Wordpress 3.4.2会将标题设置为文件名的底部,例如“DSCN1234”或“IMG\\U 1234”。我想把标题留空。
在上传过程中设置标题的代码似乎位于函数的“wp admin/includes/media.php”中media_handle_upload()
, 此处:
// Construct the attachment array
$attachment = array_merge( array(
\'post_mime_type\' => $type,
\'guid\' => $url,
\'post_parent\' => $post_id,
\'post_title\' => $title,
\'post_content\' => $content,
), $post_data );
如果我把它改成
\'post_title\' => "",
它修复了它,但我理解核心代码不应该被修改。
在上传处理程序设置标题后,是否可以使用过滤器修改标题?我试过了wp_handle_upload
和wp_handle_upload_prefilter
但他们不允许我访问post_title
数据
过滤器attachment_fields_to_edit
是否允许我访问post_title
, 但在编辑库时,它会为每个图像触发--我只想修改post_title
一幅图像上传后立即显示。(如果用户随后手动将标题设置为文件名,我不想将其删除。)还有其他想法吗?
更新:我刚刚发现post_title
每次更新库时(对图像重新排序等),即使我使用attachment_fields_to_edit
过滤器以清除post_title
, 它并没有保持清除状态,因为当我单击“保存更改”时,很明显我不喜欢将标题字段设置为空,即使它是必填字段(旁边的红色星号)。赞赏其他想法。
谢谢<拉塞尔
最合适的回答,由SO网友:Russell G 整理而成
(在@brasofilo的帮助下回答我自己的问题)
Wordpress 3.5有一个很棒的新媒体管理器,它不再需要为图像填写标题。在库中重新组织图像时,它也不再自动填充标题。但是,在上载图像时,它仍然会用图像文件名填充标题,例如“DSCN1234”。但可以通过将以下代码添加到functions.php
主题中的文件:
add_action( \'add_attachment\', \'wpse_70093_modify_uploaded_file_title\' );
function wpse_70093_modify_uploaded_file_title( $attachment_ID )
{
$the_post = array();
$the_post[\'ID\'] = $attachment_ID;
$the_post[\'post_title\'] = \'\';
wp_update_post( $the_post );
}
上传图像后,标题将为空,除非您专门将其设置为某个值,否则标题将保持为空,即使图像是在Wordpress中编辑的。
SO网友:brasofilo
可以做的是将所有上传的标题设置为“无标题”。
然后,过滤器the_title
如果附件标题与默认标题匹配,则返回空字符串。
其基本思想是:
add_action( \'add_attachment\', \'wpse_70093_modify_uploaded_file_title\' );
add_filter( \'the_title\', \'wpse_70093_display_untitled\', 10, 2 );
function wpse_70093_modify_uploaded_file_title( $attachment_ID )
{
$the_post = array();
$the_post[\'ID\'] = $attachment_ID;
$the_post[\'post_title\'] = \'Untitled\';
wp_update_post( $the_post );
}
function wpse_70093_display_untitled( $title, $id )
{
if( \'attachment\' != get_post_type( $id ) )
return $title;
if( is_admin() )
return $title;
if( !is_admin() && \'Untitled\' == $title )
return \'\';
return $title;
}
[update]<我错过了前端进近。筛选
the_title
仅适用于
attachment.php
页
通过编辑器插入的图像必须filtered 使用:
add_filter(\'image_send_to_editor\', \'wpse_53577_img_wrapper\', 20, 8);
function wpse_53577_img_wrapper($html, $id, $caption, $title, $align, $url, $size, $alt)
{
/* Manipulate $html result */
return $html;
}
The
[gallery]
必须使用重建短代码
post_gallery
.
其他案件必须单独处理。