web-dev-qa-db-fra.com

Comment ajouter l'URL de l'image à partir d'un flux RSS externe et l'insérer dans un champ personnalisé?

* Note de l'éditeur (Titre original: l'URL d'une image via un champ personnalisé) a été modifiée pour être plus descriptive.

Bonjour à tous, Je ne suis même pas sûr si cela peut être fait mais ... après avoir recherché ces 6 dernières heures, rien ne m'arrête, je dois demander: /

J'ai un curseur d'image que j'utilise et que je dois ajouter tout le temps à l'URL de l'image (pas l'URL du pouce) dans un champ personnalisé (postimage). Cela fonctionne bien, mais j'ai besoin d'un moyen de le faire pour ajouter automatiquement l'URL de l'image dans ce champ personnalisé.

1
VKJSM

Ceci est difficile mais je pense que cela fonctionnera. Quelqu'un s'il vous plaît corrigez-moi si je me trompe.

Cela utilise la bibliothèque externe Simple Pie intégrée à WordPress pour extraire le flux, obtenir l'URL de l'image, créer un nouveau message pour chaque élément et enregistrer l'URL de l'image sous forme de champ personnalisé.

Pour activer le processus, nous devons nous connecter à wp_cron. Le code ci-dessous le fait tous les jours, mais il serait probablement préférable de le faire chaque semaine pour éviter les chevauchements. Il y aura probablement un certain chevauchement, il reste donc un moyen de vérifier si nous avons déjà importé l'image.

Nous avons d’abord besoin d’une fonction pour enregistrer le champ personnalisé après la création de la publication. Cette section provient d'une autre réponse trouvée sur WordPress Answers .

Modifier:

Cela doit être encapsulé dans un plugin pour planifier l'événement cron et l'événement cron manquait à l'action pour le déclencher.

Edit: # 2:

J'ai testé le plug-in et apporté quelques modifications. Tout fonctionne parfaitement, sauf que le flux RSS que nous récupérons contient des URL relatives. Ainsi, dans le code, le code du curseur vous devrez afficher le nom de domaine puis le champ personnalisé:

'<img src="http://animelon.com<?php get_post_meta($post->ID, 'feed_image_url', true); ?>" />

<?php
/*
Plugin Name: Fetch The Feed Image
Version: 0.1
Plugin URI: http://c3mdigital.com       
Description: Sample plugin code to fetch feed image from rss and save it in a post
Author: Chris Olbekson
Author URI: http://c3mdigital.com
License: Unlicense For more information, please refer to <http://unlicense.org/>
*/

//Register the cron event on plugin activation and remove it on deactivation

register_activation_hook(__FILE__, 'c3m_activation_hook');
register_deactivation_hook(__FILE__, 'c3m_deactivation_hook');

add_action( 'c3m_scheduled_event', 'create_rss_feed_image_post');
function c3m_activation_hook() {
    wp_schedule_event(time(), 'weekly', 'c3m_scheduled_event');
}

function c3m_deactivation_hook() {
 wp_clear_scheduled_hook('c3m_scheduled_event');    
}


function create_rss_feed_image_post() {
     if(function_exists('fetch_feed')) {
            include_once(ABSPATH . WPINC . '/feed.php');               // include the required file
            $feed = fetch_feed('http://animelon.com/booru/rss/images'); // specify the source feed

    }       

        foreach ($feed->get_items() as $item) :

        //  global $user_ID;
            $new_post = array(
            'post_title' =>  $item->get_title(),
            'post_status' => 'published',
            'post_date' => date('Y-m-d H:i:s'),
            //'post_author' => $user_ID,
            'post_type' => 'post',
            'post_category' => array(0)
            );
            $post_id = wp_insert_post($new_post);

        if ($Enclosure = $item->get_Enclosure() )

            update_post_meta( $post_id, 'feed_image_url', $Enclosure->get_link() );
        endforeach;
    }

Capture d'écran des nouveaux messages ajoutés:

enter image description here

Capture d'écran du champ personnalisé créé:

enter image description here

1
Chris_O

ajoutez un filtre à the_content qui vérifie s'il s'agit d'un flux et ajoute l'image.

add_filter('the_content', 'add_image_to_feed');

function add_image_to_feed( $content ){
if( is_feed() ){
    $image = get_post_meta($post->ID, 'Your Custom Field');
    $content = '<img src="'.$image.'" />'.$content;
    return $content;
} else {
    return $content;
}
}

au moins je pense que ça va marcher :)

0
Milo