Manchmal müssen Sie einem Beitrag oder einem benutzerdefinierten Beitragstyp von einem anderen Server als dem, auf dem Ihre WordPress-Installation ausgeführt wird, dynamisch ein vorgestelltes Bild hinzufügen. Und Sie stehen vor einem gemeinsamen Problem: Wie geht das?
Natürlich müssen Sie in diesem Fall das vorgestellte Bild vom zweiten Server holen, auf Ihren eigenen Server im Upload-Ordner herunterladen und dem richtigen Beitrag zuordnen. Im ersten Schritt erstellen wir dynamisch einen neuen Beitrag und kümmern uns dann um das vorgestellte Bild.
Schritt 1: Einen Beitrag dynamisch erstellen
Um einen Beitrag dynamisch zu erstellen, müssen Sie die wp_insert_post() Funktion. Sie können den folgenden Code in eine „IF“-Anweisung einfügen, ansonsten wird jedes Mal, wenn eine Seite geladen wird, ein neuer Beitrag erstellt. Nicht so praktisch.
// Register Post Data
$post = array();
$post['post_status'] = 'publish';
$post['post_type'] = 'post'; // can be a CPT too
$post['post_title'] = 'My New Post';
$post['post_content'] = 'My new post content';
$post['post_author'] = 1;
// Create Post
$post_id = wp_insert_post( $post );
Durch Ausführen dieses Codes wird einfach ein neuer Beitrag erstellt. Jetzt ist es an der Zeit, das vorgestellte Bild hinzuzufügen.
Schritt 2: Fügen Sie das empfohlene Bild hinzu
Um das vorgestellte Bild von einer URL hinzuzufügen, müssen wir einige WordPress-Funktionen verwenden:
- wp_upload_dir() : um den Uploader-Ordnerpfad abzurufen
- wp_mkdir_p() : Ordner erstellen und Berechtigungen festlegen
- wp_check_filetype() : um das Anhangsformat zu überprüfen
- sanitize_file_name() : um den Dateinamen des Anhangs zu formatieren
- wp_insert_attachment() : Anhang erstellen
- wp_generate_attachment_metadata() : um Anhang-Metadaten zu generieren
- wp_update_attachment_metadata() : um Anhangs-Metadaten zu aktualisieren
- set_post_thumbnail() : um Anhang als Beitragsbild zuzuweisen
Und jetzt ist hier der Code. Ich habe jede Aktion kommentiert, damit Sie genau sehen können, was passiert, wenn dieses Skript ausgeführt wird.
// Add Featured Image to Post
$image_url = 'http://s.wordpress.org/style/images/wp-header-logo.png'; // Define the image URL here
$image_name = 'wp-header-logo.png';
$upload_dir = wp_upload_dir(); // Set upload folder
$image_data = file_get_contents($image_url); // Get image data
$unique_file_name = wp_unique_filename( $upload_dir['path'], $image_name ); // Generate unique name
$filename = basename( $unique_file_name ); // Create image file name
// Check folder permission and define file location
if( wp_mkdir_p( $upload_dir['path'] ) ) {
$file = $upload_dir['path'] . '/' . $filename;
} else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
// Create the image file on the server
file_put_contents( $file, $image_data );
// Check image file type
$wp_filetype = wp_check_filetype( $filename, null );
// Set attachment data
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name( $filename ),
'post_content' => '',
'post_status' => 'inherit'
);
// Create the attachment
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
// Include image.php
require_once(ABSPATH . 'wp-admin/includes/image.php');
// Define attachment metadata
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
// Assign metadata to attachment
wp_update_attachment_metadata( $attach_id, $attach_data );
// And finally assign featured image to post
set_post_thumbnail( $post_id, $attach_id );
Das Interessante an diesem Code ist, dass Sie ihn in einer Schleife platzieren können. Zum Beispiel, um Beiträge aus einer CSV-Datei oder einer XML-Datei zu importieren. Dies ist wirklich mächtig und sehr nützlich, aber vergessen Sie eines nicht: Verwenden Sie dieses Skript niemals in Ihrer Datei functions.php, ohne vorher ein Bedingungs-Tag zu platzieren, sonst werden Sie in wenigen Minuten Hunderte von neuen Beiträgen erstellt!
Sie fanden diesen Ausschnitt nützlich? Bitte hinterlassen Sie einen Kommentar und sagen Sie uns, was Sie aus diesem Ausschnitt erstellt haben!