从WordPress中的附件链接获取附件URL

时间:2018-10-05 作者:Divjot Singh

我一直在尝试使用图像附件的链接(例如http://localhost/mytheme/post-format-gallery/100\\u 5478.jpg)获取图像附件的URL(例如http://localhost/mytheme/post-format-gallery/100\\u 5478/)。他们是否有实现这一目标的直接功能?

我也尝试了加入附件ID,但也被困在那里,因为我唯一拥有的是一个附件链接,它没有多大帮助。

我希望在WordPress中修改库的标记,以便为其启用lightbox。

有一种黑客攻击是在最后使用JS添加扩展,但它根本不可靠。

任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:Xhynk 整理而成

有两个函数可以根据彼此获取不同的附件参数,但粗略看一下并不能表明有一个函数可以根据附件页面URL获取附件参数。

您可以尝试使用$wpdb 类,然后将该ID放入wp_get_attachment_image_src() 作用像这样的事情会让你开始:

function get_attachment_id_by_url( $url ){
    global $wpdb;

    $url   = trim( $url, \' /\' ); // Trim whitespace and trailing slash
    $parts = explode( \'/\', $url ); 
    $name  = end( $parts ); // We only want the last part

    if( ! $result = $wpdb->get_row( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s", $name ) ) ) // potentially replace post_name with post_title
        return false;

    return $result->ID;
}
这将允许您执行以下操作:

// Attachment URL we want to utilize
$image_url = \'https://example.com/attachment/name_of_photo/\';

// Get the ID using our function above
$image_id  = get_attachment_id_by_url( $image_url );

// Get the SRC parameters from that ID (use whatever `$size` args you want)
$image_src = wp_get_attachment_image_src( $image_url, \'full\' );

/**
 * var_dump($image_src) Output:
 * 
 * array(4) {
 *    [0]=> string(48) "https://example.com/attachment/name_of_photo.png"
 *    [1]=> int(640)
 *    [2]=> int(480)
 *    [3]=> bool(true)
 * }
 */

结束

相关推荐

如何检查WooCommerce订单号是否等于帖子ID?

我面临着一个挑战。我需要检查Woocommerce订单号是否等于Post ID。我知道90%的情况都是这样,但我需要防弹的方法来检查。请参见不正确且订单号和Post ID确实不同的示例:需要考虑的事项:我的插件可能安装在Woocommerce尚未创建订单的时候,但我在wordpress multisite上发现了这种情况,但我知道也有用于顺序订单号的插件。而且有很多插件,所以我不能只检查是否存在一个或两个插件</我需要知道这一点,因为我正在开发一个插件来检查客户手动支付的款项。因此,我知道付款将通过