私のWordPress投稿に任意の画像をアップロードしながら、タイトル、キャプション、代替テキスト、説明に同じ画像タイトルを自動入力/追加する方法を誰かに教えてもらえますか。
あなたはwp-includes/post.phpの3332行目から 'add_attachment'アクションにフックすることができます。 (Version 4.4) post_idを渡し、そこからファイル名を取得して必要なもので投稿メタを更新できます。
add_action( 'add_attachment', 'wpse_125805_add_image_meta_data' );
function wpse_125805_add_image_meta_data( $attachment_ID ) {
$filename = $_REQUEST['name']; // or get_post by ID
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);
$withoutExt = str_replace(array('-','_'), ' ', $withoutExt);
$my_post = array(
'ID' => $attachment_ID,
'post_excerpt' => $withoutExt, // caption
'post_content' => $withoutExt, // description
);
wp_update_post( $my_post );
// update alt text for post
update_post_meta($attachment_ID, '_wp_attachment_image_alt', $withoutExt );
}
added_post_meta
は新しい画像に引っ掛かる良い時期のようです。デフォルトのメタがすでに設定されているだけでなく、この関数は添付ファイルのメタデータを保持する$post_id
とともに$meta_value
を与えます。そこからあなたはすべてのフィールドを取得し、あなたが望むものを設定することができます。
add_action('added_post_meta', 'wpse_20151219_after_post_meta', 10, 4);
function wpse_20151219_after_post_meta($meta_id, $post_id, $meta_key, $meta_value) {
// _wp_attachment_metadata added
if($meta_key === '_wp_attachment_metadata') {
// ----------------------------------------------------------------------
// POST
// ----------------------------------------------------------------------
// Change basic fields on attachment post
wp_update_post(array(
'ID' => $post_id,
'post_title' => "This is a TITLE for $post_id",
'post_content' => "This is the DESCRIPTION for $post_id",
'post_excerpt' => "This is the CAPTION for $post_id",
));
// ----------------------------------------------------------------------
// POST META
// ----------------------------------------------------------------------
// Change ALT Text
update_post_meta($post_id, '_wp_attachment_image_alt', "This is the ALT Text for $post_id");
// Add Custom Field
update_post_meta($post_id, '_wpse_20121219_my_custom_meta', 'MyCustomMetaValue');
// ----------------------------------------------------------------------
// POST META ( ATTACHMENT METADATA )
// ----------------------------------------------------------------------
// Change Image Metadata
$meta_value[ 'image_meta' ] = array_merge($meta_value[ 'image_meta' ], array(
'credit' => 'https://black-buddha.com',
'camera' => 'The Best Camera EVER!',
'copyright' => date('Y'),
'title' => "This is a META TITLE for $post_id",
'caption' => "This is a META CAPTION for $post_id",
));
// Update The Image Metadata
wp_update_attachment_metadata($post_id, $meta_value);
// _wp_attached_file
// _wp_attachment_metadata (serialized)
// _wp_attachment_image_alt
// _wpse_20121219_my_custom_meta
$attachment_meta = get_post_meta($post_id);
// width
// height
// file
// sizes
// image_meta
// aperture
// credit
// camera
// caption
// created_timestamp
// copyright
// focal_length
// iso
// shutter_speed
// title
// orientation
// title
// keywords
$attachment_metadata = wp_get_attachment_metadata($post_id);
}
}
もっと簡単な解決策としては、 this 私がしばらく前に作った/ WordPressプラグインを使うことができます。
このプラグインには、メディアライブラリ内に既に存在する画像の画像属性を更新する一括更新機能も付属しています。