imagen destacada de wordpress desde una url externa sin descargar

5 minutos de lectura

avatar de usuario
usuario3449429

me gustaría usar imágenes externas como imagen destacada en wordpress.

ya sea cambiando el código de worpdress. (agregando un metabox de imagen destacada que acepta URL y realiza algunas modificaciones para mostrar la imagen destacada de la URL correctamente)

o modificando la miniatura remota del complemento WP, que establece una imagen destacada desde una URL de imagen. descarga la imagen y crea miniaturas en wordpress y configura la imagen destacada.

modificaciones: * no descarga desde la url, solo usa la url para mostrar directamente en el blog. * elimine wp-content/uploads de la url generada por wordpress para mostrar la imagen destacada (solo para url externas) * sin creación de miniaturas.

muchas gracias por leer, sé que hay muchas preguntas sobre este problema, pero si resolvemos esta pregunta, podría ser útil para muchas personas.

aquí el código:

<?php
/*
Plugin Name: WP Remote Thumbnail
Plugin URI: http://magnigenie.com/wp-remote-thumbnail-set-external-images-featured-image/
Description: A small light weight plugin to set external/remote images as post thumbnail/featured image.
Version: 1.0
Author: Nirmal Kumar Ram
Author URI: http://magnigenie.com
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
?>
<?php

/**
 * Initialize wprthumb on the post edit screen.
 */
function init_wprthumb() {
    new wprthumb();
}

if ( is_admin() ) {
    add_action( 'load-post.php', 'init_wprthumb' );
    add_action( 'load-post-new.php', 'init_wprthumb' );
}


class wprthumb {

    /**
     * Hook into the appropriate actions when the wprthumb is constructed.
     */
    public function __construct() {
        add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
        add_action( 'save_post', array( $this, 'save' ) );
    }

    /**
     * Adds the meta box container.
     */
    public function add_meta_box( $post_type ) {
    if ( post_type_supports( $post_type, 'thumbnail' )) {
      add_meta_box(
        'some_meta_box_name'
        ,'Remote Post Thumbnail'
        ,array( $this, 'render_meta_box_content' )
        ,$post_type
        ,'side'
        ,'default'
      );
    }
    }

    /**
     * Save the meta when the post is saved.
     */
    public function save( $post_id ) {

        /*
         * We need to verify this came from the our screen and with proper authorization,
         * because save_post can be triggered at other times.
         */

        // Check if our nonce is set.
        if ( ! isset( $_POST['wprthumb_nonce'] ) )
            return $post_id;

        $nonce = $_POST['wprthumb_nonce'];

        // Verify that the nonce is valid.
        if ( ! wp_verify_nonce( $nonce, 'wprthumb' ) )
            return $post_id;

        // If this is an autosave, our form has not been submitted,
    // so we don't want to do anything.
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
            return $post_id;

        // Check the user's permissions.
        if ( 'page' == $_POST['post_type'] ) {

            if ( ! current_user_can( 'edit_page', $post_id ) )
                return $post_id;

        } else {

            if ( ! current_user_can( 'edit_post', $post_id ) )
                return $post_id;
        }

    /* All good, its safe for us to save the data now. */

        // Sanitize the user input.
        $image = sanitize_text_field( $_POST['remote_thumb'] );
    $upload_dir = wp_upload_dir();
    //Get the remote image and save to uploads directory
    $img_name = time().'_'.basename( $image );
    $img = wp_remote_get( $image );
    $img = wp_remote_retrieve_body( $img );
    $fp = fopen( $upload_dir['path']."https://stackoverflow.com/".$img_name , 'w');
    fwrite($fp, $img);
    fclose($fp);

    $wp_filetype = wp_check_filetype( $image , null );
    $attachment = array(
      'post_mime_type' => $wp_filetype['type'],
      'post_title' => preg_replace('/\.[^.]+$/', '', $image ),
      'post_content' => '',
      'post_status' => 'inherit'
    );

    //require for wp_generate_attachment_metadata which generates image related meta-data also creates thumbs
    require_once( ABSPATH . 'wp-admin/includes/image.php' );
    $attach_id = wp_insert_attachment( $attachment, $image, $post_id );
    //Generate post thumbnail of different sizes.
    $attach_data = wp_generate_attachment_metadata( $attach_id , $image );
    wp_update_attachment_metadata( $attach_id,  $attach_data );
    //Set as featured image.
    delete_post_meta( $post_id, '_thumbnail_id' );
    add_post_meta( $post_id , '_thumbnail_id' , $attach_id, true);
    }

    /**
     * Render Meta Box content.
     */
    public function render_meta_box_content( $post ) {

        // Add an nonce field so we can check for it later.
        wp_nonce_field( 'wprthumb', 'wprthumb_nonce' );

        // Display the form, using the current value.
        echo '<label for="remote_thumb">';
        _e( 'Enter remote image url', 'wprthumb' );
        echo '</label> ';
        echo '<input type="text" id="remote_thumb" name="remote_thumb" size="25" />';
    }
}

  • ¿Has encontrado una manera?

    – Las nueces

    7 de noviembre de 2014 a las 9:30

  • Estoy usando Nelio Imagen destacada externa

    – usuario3449429

    7 de noviembre de 2014 a las 9:57

Me acabo de enterar de que puedes insertar imágenes desde direcciones URL remotas sin tener que descargarlas primero y luego volver a cargarlas. Esto funciona de forma predeterminada en WordPress sin ningún requisito para instalar ningún complemento.

Así es cómo:

Dondequiera que vea CARGAR ARCHIVOS, haga clic en eso: su navegador de archivos aparecerá donde esperaría, debe elegir un archivo local, PERO si simplemente pega la URL de la IMAGEN en este cuadro y presiona ABRIR o [ENTER] luego WordPress importa la imagen desde la URL remota.

Haga clic en SELECCIONAR ARCHIVOS para cargar imágenes desde una URL remota
Haga clic en SELECCIONAR ARCHIVOS para cargar imágenes desde una URL remota

Pegue la URL de la imagen remota en el lugar donde normalmente tendría el nombre del archivo
Pegue la URL de la imagen remota en el lugar donde normalmente tendría el nombre del archivo

  • lo siento, pero no quiero poner ningún archivo en mi servidor. solo muestra la imagen distante. gracias por el consejo, no conocía este

    – usuario3449429

    14 de junio de 2014 a las 4:39

  • Sí, me ha ahorrado mucho tiempo desde que lo descubrí.

    – Dave Hilditch

    23 de febrero de 2015 a las 1:11

Acabo de encontrar este complemento que parece hacer lo que necesitas:
https://wordpress.org/plugins/external-featured-image

avatar de usuario
marcel

Puedes usar el complemento Imagen destacada de URL (FIFU) para eso.

  • Probé su complemento hoy, pero no parece funcionar con imágenes de Google Photo.

    – Luuklag

    08/01/2021 a las 21:39


  • ¿Podría ponerse en contacto con el soporte? ¡Gracias!

    – Marcelo

    9 de enero de 2021 a las 15:27

¿Ha sido útil esta solución?