是否在图像上传后使用过滤器修改POST_TITLE?

时间:2012-10-22 作者:Russell G

上载图像时,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_uploadwp_handle_upload_prefilter 但他们不允许我访问post_title 数据

过滤器attachment_fields_to_edit 是否允许我访问post_title, 但在编辑库时,它会为每个图像触发--我只想修改post_title 一幅图像上传后立即显示。(如果用户随后手动将标题设置为文件名,我不想将其删除。)还有其他想法吗?

更新:我刚刚发现post_title 每次更新库时(对图像重新排序等),即使我使用attachment_fields_to_edit 过滤器以清除post_title, 它并没有保持清除状态,因为当我单击“保存更改”时,很明显我不喜欢将标题字段设置为空,即使它是必填字段(旁边的红色星号)。赞赏其他想法。

谢谢<拉塞尔

3 个回复
最合适的回答,由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网友:mirage

有一个插件可用于此目的http://wordpress.org/extend/plugins/img-title-removal/ 这个插件会完全隐藏标题(不确定这是否是你想要完成的?)

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.

其他案件必须单独处理。

结束

相关推荐

Different Server for Images

我在HostGator上使用共享主机,现在我想在某个服务器上使用另一个共享主机,只想将我网站上使用的图像放到该主机上。这样那些http图像请求就可以转到另一台服务器,这是可能的吗?如何做到这一点?谢谢