Cómo recortar una imagen de src en un tamaño específico

4

Obtuve la imagen src de la entrada del usuario por un campo metabox. Ahora quiero renderizar esta imagen en un tamaño específico. Igual que el recorte de imágenes de WordPress en un tamaño específico.

Intenté obtener la ID de la imagen del src y luego usé la siguiente función para obtener el src de la imagen con una imagen de tamaño.

<?php
$img_id = get_image_id($img_src);
$sized_img_src = wp_get_attachment_image_src($img_id, 'image_size');

Y aquí está la función get_image_id() :

function 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];
}

En realidad, no obtengo los ID de imagen para las imágenes cargadas con esta función. ¿Dónde está el problema?

    
pregunta Eh Jewel 12.06.2017 - 18:36

1 respuesta

3

WordPress tiene una función diseñada exclusivamente para este propósito. attachment_url_to_postid() le permite recuperar la ID de un archivo adjunto de su URL, que luego puede usar para obtener la ID de la publicación más adelante.

Si desea hacerlo escribiendo una consulta MySQL, sin embargo, preferiría sugerir que busque el nombre del archivo en meta_value en su lugar:

$basename = basename ($image_url);
$sql = "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value = '$basename '";
$id = $wpdb->get_var($sql);

Las columnas GUID están codificadas en la base de datos una vez que publicas una publicación. Por lo tanto, si publicas una publicación en localhost, un GUID de muestra será así:

http://localhost/wp-content/uploads/my-image.jpg

Pero buscará una URL en línea de su imagen al usar esto:

$wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", $image_url ));

Lo que no devolverá nada, obviamente. Sin embargo, puede usar LIKE junto con nombre base:

$img_name = basename ($image_url);
$wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid LIKE '%s';", $img_name ));

Que es lo mismo que el primer enfoque.

    
respondido por el Jack Johansson 13.06.2017 - 08:18

Lea otras preguntas en las etiquetas