私が画像をアップロードするとき、Wordpress 3.4.2はタイトルを "DSCN1234"や "IMG_1234"のようなファイル名のベースに設定します。タイトルを空白のままにしてください。
アップロード中にタイトルを設定するコードは、関数media_handle_upload()
の "wp-admin/includes/media.php"にあります。
__コード__
// 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
を修正したいです。 (その後、ユーザーが手動でタイトルをファイル名に設定した場合、それを削除したくはありません。)その他のアイデアはありますか?
UPDATE:そうですね、ギャラリーが更新されるたびにpost_title
がファイル名に戻ります(画像の並べ替えなど)。そしてpost_title
フィルターを使用してattachment_fields_to_edit
をクリアしても、post_title
は消えません。 [変更を保存]をクリックしたときに、[タイトル]フィールドが必須フィールドであるにもかかわらず空になるように設定しているという事実が気に入らないことが明らかになっています(その隣の赤いアスタリスク)。他のアイデアは大歓迎です。
ありがとうございます。
ラッセル
(@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で編集されている場合でも、特に設定しない限り、タイトルはそのまま残ります。
できることはすべてのアップロードのタイトルを「無題」に設定することです。
その後、the_title
をフィルタリングし、attachentのタイトルがデフォルトと一致する場合は空の文字列を返します。
基本的な考え方は、
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;
}
[更新]
フロントエンドのアプローチが欠けていました。 the_title
のフィルタリングは、attachment.php
ページに対してのみ機能します。
エディタを通して挿入された画像は、 フィルタ処理 される必要があります。
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;
}
[gallery]
ショートコードは post_gallery
で再構築する必要があります。
その他の場合は個別に対処する必要があります。
この目的のために使用できるプラグインがあります http://wordpress.org/extend/plugins/img-title-removal/ このプラグインは非表示にしますまったくのタイトル(これがあなたが達成したいものであるかどうかわからない?)