添付ファイルIDをその名前で取得することは可能ですか?そして、この添付ファイルが割り当てられている親の投稿を取得することは可能ですか。
添付ファイルIDとpost_parentを name / slug または filename で取得するためのカスタムコードを記述する必要があります(ファイルのアップロード中に変更されていない場合)。
あなたのテーマの functions.php ファイルに以下のコードを入れてください。
if( ! ( function_exists( 'wp_get_attachment_by_post_name' ) ) ) {
function wp_get_attachment_by_post_name( $post_name ) {
$args = array(
'posts_per_page' => 1,
'post_type' => 'attachment',
'name' => trim( $post_name ),
);
$get_attachment = new WP_Query( $args );
if ( ! $get_attachment || ! isset( $get_attachment->posts, $get_attachment->posts[0] ) ) {
return false;
}
return $get_attachment->posts[0];
}
}
それからあなたは以下のようにあなたがそれを必要とするところで関数を呼ぶことができます: -
$attachment = wp_get_attachment_by_post_name( $post_name );
// Replace post_name by the name/slug of the attachment
// It will give you an object, which you can render like below to get the ID and post_parent
if ( $attachment ) {
echo $attachment->ID; // Gives the id of the attachment
echo $attachment->post_parent; // Gives the post_parent id
echo $attachment->post_title; // Gives the attachment title.
}
もう1つの可能なアプローチは、$ wpdbを直接使用して、postsテーブル内で、検索された役職とpost_type "attachment"を使用してSQLクエリを実行することです。
function get_attachment_url_by_title( $title ) {
global $wpdb;
$attachments = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_title = '$title' AND post_type = 'attachment' ", OBJECT );
//print_r($attachments);
if ( $attachments ){
$attachment_url = $attachments[0]->guid;
}else{
return 'image-not-found';
}
return $attachment_url;
}
// usage:
get_attachment_url_by_title('your_image_title');
このコードはこのタイトルの最初の添付ファイルを返すことに注意してください。
function get_attachment_url_by_title( $title ) {
$attachment = get_page_by_title($title, OBJECT, 'attachment');
//print_r($attachment);
if ( $attachment ){
$attachment_url = $attachment->guid;
}else{
return 'image-not-found';
}
return $attachment_url;
}
echo get_attachment_url_by_title('your_image_title');
get_page_by_title()
がうまくいくでしょう。
完全なURLをタイトルとして
get_page_by_title( pathinfo( 'https://www.example.com/file.jpg' )['filename'], "OBJECT", 'attachment' );
投稿/添付ファイルが見つからなかった場合は、WP_PostオブジェクトまたはNullを返します。
WordPress Codex に基づく
添付ファイル ' - 添付ファイル。デフォルトのWP_Queryのpost_statusは 'publish'ですが、添付ファイルのデフォルトのpost_statusは 'inherit'です。つまり、明示的にpost_statusを 'inherit'または 'any'に設定しない限り、添付ファイルは返されません。 (下記のpost_statusを参照)