仅通过图像URL获取图像alt属性

时间:2016-11-29 作者:Taylor Foster

是否有一种可能的方法可以通过知道URL从媒体文件中获取alt文本?例如,如果指向我的图像的路径是/bc/wp-content/uploads/placeholder-image.png 有没有办法(只需使用该URL)获取该图像的alt文本。我知道你通常需要身份证之类的东西,想办法解决这个问题。

PHP

<img src="/bc/wp-content/uploads/placeholder-image.png" alt="<?php /* do something */ ?>" />

2 个回复
SO网友:socki03

使用找到的函数here, 您可以将其添加到函数中。php

// retrieves the attachment ID from the file URL
function pippin_get_image_id($image_url) {
    global $wpdb;
    $attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid=\'%s\';", $image_url )); 
    return $attachment[0]; 
}
但要使用它,您需要完整的图像URL。

$img_url = get_bloginfo(\'url\') . \'/bc/wp-content/uploads/placeholder-image.png\';

if ( $img_id = pippin_get_image_id($img_url) ) {
    // Using wp_get_attachment_image should return your alt text added in the WordPress admin.
    echo wp_get_attachment_image( $img_id, \'full\' );
} else {
    // Fallback in case it\'s not found.
    echo \'<img src="\' . $img_url . \'" alt="" />\';
}

SO网友:Howdy_McGee

这是对Pippin Function. 由于它返回一个post ID,我们可以使用它来获取另一个文本,该文本保存为post Meta:

/**
 * Get image alt text by image URL
 *
 * @param String $image_url
 *
 * @return Bool | String
 */
function image_alt_by_url( $image_url ) {
    global $wpdb;

    if( empty( $image_url ) ) {
        return false;
    }

    $query_arr  = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE guid=\'%s\';", strtolower( $image_url ) ) );
    $image_id   = ( ! empty( $query_arr ) ) ? $query_arr[0] : 0;

    return get_post_meta( $image_id, \'_wp_attachment_image_alt\', true );
}

相关推荐

从wp.media.editor.附件获取所选图像URL到文本输入失败。我做错了什么?

我已将媒体按钮作为post meta field 在以下情况下将图像URL插入文本字段Insert Into Page 单击按钮。它一直工作到打开“媒体存储库”窗口、选择“图像”和“插入”为止,但没有向输入字段传递任何值。Expected result结果应该是URL和媒体ID插入为https://avalon.com/dev/wp-content/uploads/2021/01/scp7147prko31.jpg|12 但没有返回值。我可以手动输入URL并保存数据。我彻底扫描了我的代码,并尝试了许多ja