Mohammad J
Mohammad J

Reputation: 136

How to get meta attributes (title , alt ,...) of wordpress gallery images?

I have used this function to format default wordpress galley theme to my bootstrap theme and works fine. But when I call "image_alt" and "image_title" have no success.

Any help, please? Thank You!

add_filter( 'post_gallery', 'bootstrap_gallery', 10, 3 );

function bootstrap_gallery( $output = '', $atts, $instance )
{
    $atts = array_merge(array('columns' => 3), $atts);

    $columns = $atts['columns'];
    $images = explode(',', $atts['ids']);

    $col_class = 'img-box col-sm-4 col-xs-6 col-xxs-12 no-padding wow flipInX animated'; // default 3 columns
    if ($columns == 1) { $col_class = 'img-box col-xs-12 no-padding wow flipInX animated';}
    else if ($columns == 2) { $col_class = 'img-box col-xs-6 col-xxs-12 no-padding wow flipInX animated'; }
    // other column counts

    $return = '<div class="row gallery">';

    $i = 0;

    foreach ($images as $key => $value) {

        if ($i%$columns == 0 && $i > 0) {
            $return .= '</div><div class="row gallery portfolio center">';
        }

        $image_attributes = wp_get_attachment_image_src($value, 'full');
        $image_alt = get_post_meta( $image->id, '_wp_attachment_image_alt', true);
        $image_title = $attachment->post_title;

        $return .= '
            <div class="'.$col_class.' img-box col-sm-4 col-xs-12 no-padding wow flipInX animated">
                <a data-gallery="gallery" href="'.$image_attributes[0].'">
                    <img src="'.$image_attributes[0].'" alt="'.$image_alt.'" class="img-responsive">
                </a>
                <div class="title">'.$image_title.'</div>
            </div>';

        $i++;
    }

    $return .= '</div>';

    return $return;
}

Upvotes: 1

Views: 2591

Answers (1)

v-stackOverFollower
v-stackOverFollower

Reputation: 595

get the image ID first, try this

$image_id = get_post_thumbnail_id(get_the_ID());
or
$image_id = get_post($id);

and then you can pass id for getting image alt and image title.

$image_alt = get_post_meta($image_id, '_wp_attachment_image_alt', true);
$image_title = $image_id->post_title;

Upvotes: 1

Related Questions