web-dev-qa-db-fra.com

Création de publications groupées avec des vidéos Youtube

Je suis un peu nouveau sur Wordpress et je suis un peu perdu à lire toutes sortes de docs sur la création de publications en vrac avec PHP. J'ai écrit un petit code qui utilise Youtube API v3 pour obtenir toutes les vidéos d'une chaîne Youtube et je veux créer un post dans wordpress en utilisant cette boucle et ces données.

Mon code est ci-dessous si quelqu'un en a besoin pour quelque utilisation que ce soit et j'apprécierai toute aide et explication sur la création de publications en masse à l'aide de PHP et sur l'exécution du code à l'aide de wordpress.

    <?php

$var = file_get_contents("test.txt"); // list of category IDs
$var = explode("\n", $var);

$servername = "localhost";
$username = "xxxxx";
$password = "xxxxx";
$dbname = "xxxxx";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

function updateYoutube( $videocode ){
    global $conn;

    $run = $conn->query("SELECT `ID` FROM `youtubetable` WHERE `ID` = '$videocode'");

    if ($run->num_rows > 0)
        return false;
    else
    {
        if ($conn->query("INSERT INTO youtubetable (`ID`) VALUES ('$videocode')") === TRUE)
            return true;
        else
            return false;
    }
}

foreach($var as $value)
{
    $value = file_get_contents("https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=$value&key={KEY}");
    $value = json_decode($value);
    $value = $value->items;

    foreach( $value as $id) {
        $playlist = $id->contentDetails->relatedPlaylists->uploads;

        if(empty($playlist))
            continue;

        $playlist = file_get_contents("https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=$playlist&key={KEY}&maxResults=50");
        $playlist = json_decode($playlist);
        $playlist = $playlist->items;

        foreach( $playlist as $video) {
            $videocode = $video->snippet->resourceId->videoId;

        updateYoutube( $videocode );

        }
    }

}

$conn->close();                                                                                                                                                                                         

?>

Mettre à jour:

J'essaie de créer un post pour chaque nouveau $ videocode (dans une boucle) et d'insérer ce dernier dans un champ de post personnalisé: "video_url" et un "post_title" statique/dynamique.

Merci d'avance

1
mele

Vous avez déjà votre fonction updateYoutube(). Modifiez-le pour insérer un nouveau message . Très généralement:

function updateYoutube( $videocode ){
    global $conn;

    $run = $conn->query("SELECT `ID` FROM `youtubetable` WHERE `ID` = '$videocode'");

    if ($run->num_rows > 0)
        return false;
    else
    {
        if ($conn->query("INSERT INTO youtubetable (`ID`) VALUES ('$videocode')") === TRUE) {
          // #################################
          // NOTE: The following 99% cribbed from the wp_insert_post() entry in the Codex
          // Create post object
          $my_post = array(
            'post_title'    => 'My post',
            'post_content'  => $videocode,
            'post_status'   => 'publish',
            'post_author'   => 1,
            'post_category' => array(8,39) // Obviously illustrative only
          );

          // Insert the post into the database
          wp_insert_post( $my_post );
          // ##################################
          return true;
        } else {
            return false;
        }
    }
}

Le système d’intégration automatique devrait, je crois, s’occuper du reste, même si je ne l’ai pas testé.

2
s_ha_dum