web-dev-qa-db-ja.com

image Captionまたはaltを取得するためのwp_get_attachment_caption

$output .= '
    <img 
        class="class1" 
        src="'.$atts['to'].'" 
        alt="The First Caption" 
        width="100%" 
        height="auto"
    >';

最初のキャプションの代わりに、画像のキャプション/説明を取得します。

誰かがこれを行う方法を私に導くことができますか?

私はこれを試しました→wp_get_attachment_caption しかしうまくいきませんでした。

1
The WP Novice

添付ファイルのIDがあれば、その添付ファイルのメタデータを直接取得できます。添付ファイルの代替データは_wp_attachment_image_altに格納されています。

だから、あなたが使用することができます:

$alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);

画像のキャプションを取得するには、 wp_get_attachment_metadata() を使用できます。

$metadata = wp_get_attachment_metadata( $id );
$caption = $metadata['image_meta']['caption'];

編集

あなたのコメントのコードに基づいて、これは完全なショートコードのコードです:

function simplisto_the_image($atts) {
    $atts = shortcode_atts(
        array( 
            'to' => 'http://example.com/image.jpg' 
        ), 
        $atts
    );
    $caption = '';
    // Get the attachment's ID from its URL, if the URL is valid
    $url = filter_var( $atts['to'], FILTER_SANITIZE_URL);
    if( filter_var( $url, FILTER_VALIDATE_URL) ) {
        $attachment_id = attachment_url_to_postid( $url );
        // Get the attachment's alt, if its a valid ID
        if( $attachment_id ){
            $caption = wp_get_attachment_caption( $attachment_id );
        }
    }

    $output = '<div class="lazyimg">'; 
    $output .= '<img class="lazyimg-popup" src="'.$atts['to'].'" alt="' .$caption. '" width="100%" height="auto">'; 
    $output .= '<i class="fa fa-expand" aria-hidden="true"></i>'; 
    $output .= '</div>'; 
    return $output; 
}
add_shortcode('simage', 'simplisto_the_image');

ショートコードは画像URLを受け入れ、それが有効であればメタデータを取得します。

1
Jack Johansson