it-swarm.com.de

Erstellen Sie Beiträge mit Importieren> RSS/WXR/XML und übergeben Sie Werte an benutzerdefinierte Felder

Mein Problem ist einfach. Ich muss eine Menge Posts mit Bild-URLs für eine "Fotogalerie" -Seite erstellen. Ich habe viel über das Erstellen von Posts aus RSS-Feeds und -Importen gelesen. Es ist mir gelungen, Beiträge zu erstellen, aber ich kann einen Wert nicht irgendwie an einen benutzerdefinierten Typ übergeben. Die Galerie benötigt zwei URLs, eine für das Miniaturbild und eine für die volle Größe. Der von mir verwendete Code sieht so aus.

<?xml version="1.0" encoding="UTF-8" ?>
<!-- generator="WordPress/3.2.1" created="2011-11-14 01:56" -->
<rss version="2.0"
xmlns:excerpt="http://wordpress.org/export/1.1/excerpt/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.1/">
<item>
    <title>Pavers 1</title>
    <description></description>
    <Category>Flooring</Category>
    <Category>Pavers</Category>
<wp:postmeta>
    <wp:meta_key>port_large_image_url</wp:meta_key>
    <wp:meta_value>images/portfolio/architectural.elements/Pavers.1.jpg</wp:meta_value>
</wp:postmeta>
</item>
<item>
    <title>Swimming Pools 1</title>
    <description></description>
    <Category>Flooring</Category>
    <Category>Swimming Pools</Category>
<wp:postmeta>
    <wp:meta_key>port_large_image_url</wp:meta_key>
    <wp:meta_value>images/portfolio/architectural.elements/Swimming.Pool.Decks.1.jpg</wp:meta_value>
</wp:postmeta>
</item>
</channel>
</rss>

Ich habe die meta_keys bestätigt, als ich Beiträge exportiert und die generierte XML-Datei überprüft habe. Also weiß ich, dass ich nah dran sein muss! Offenbar fehlt mir etwas.

Eine Frage, die dazugehört; Wenn ich das richtig verstehe, sind ein benutzerdefiniertes Feld die einzelnen "Metaschlüssel"? Ist das richtig?

Ich habe fast 1000 Bilder, für die ich einzelne Posts erstellen muss, einschließlich Beschreibungen und Kategorien. Wenn ich sie "stapeln" könnte, würde ich mir viel Zeit sparen und die hohe Wahrscheinlichkeit menschlicher Fehler beseitigen. Ich wäre jeder Hilfe oder Lenkung in die richtige Richtung sehr dankbar.

2
frankV

Ich habe unerbittlich gesucht und gelesen, bis ich eine Antwort gefunden habe! Es stellt sich heraus, dass die richtige Verwendung die MetaWeblog-API und XMLRPC ist, die Sie aktivieren müssen, da sie standardmäßig deaktiviert sind. Rufen Sie als erstes das Menü "Einstellungen" in Ihrem Admin-Bereich auf und navigieren Sie zu "Schreiben". Scrollen Sie nach unten, bis Sie das Kontrollkästchen XML-RPC unter "Remote Publishing" sehen. Sobald dies gespeichert ist, sind Sie so ziemlich fertig.

Sie müssen Posts exportieren und dann diese XML-Datei durchlesen, um die Metanamen Ihrer spezifischen benutzerdefinierten Felder zu erhalten. Hier ist der Code, den ich verwendet habe:

<?php
$BLOGURL = "your.wordpress.root/folder";
$USERNAME = "your_uesername";
$PASSWORD = "your_password";

function get_response($URL, $context) {
if(!function_exists('curl_init')) {
die ("Curl PHP package not installed\n");
}

/*Initializing CURL*/
$curlHandle = curl_init();

/*The URL to be downloaded is set*/
curl_setopt($curlHandle, CURLOPT_URL, $URL);
curl_setopt($curlHandle, CURLOPT_HEADER, false);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $context);

/*Now execute the CURL, download the URL specified*/
$response = curl_exec($curlHandle);
return $response;
}

/*Creating the metaWeblog.newPost request which takes on five parameters
blogid,
username,
password*/

/*The title of your post*/
$title = "Sample Post Title with Custom Fields";

 /*The contents of your post*/
 $description = "a collection lorem ipsums";

/*Forming the content of blog post*/
$content['title'] = $title;
$content['description'] = $description;
$content['categories'] = array("Uncategorized");
/*Pass custom fields*/
$content['custom_fields'] = array(
    array( 'key' => 'your_custom_feild_meta-key', 'value' => 'place whatever value your custom field requires here' )
    );
/*Whether the post has to be published, false means it will be created as a draft*/
$toPublish = false;
$request = xmlrpc_encode_request("metaWeblog.newPost",
array(1,$USERNAME, $PASSWORD, $content, $toPublish));

/*Making the request to wordpress XMLRPC of your blog, you may have to change this to the correct path for your xmlrpc.php file*/
$xmlresponse = get_response($BLOGURL."/xmlrpc.php", $request);
$response = xmlrpc_decode($xmlresponse);

/*Printing the response on to the console*/
/*If it works, you'll see a number followed by :Post ID*/
echo ":Post ID"; print_r($response);
 echo "\n";
  ?>

Das ist es! Jetzt können Sie die Erstellung dieser Datei mit etwas PHP, Javascript, Perl ganz einfach automatisieren ... was immer Sie wollen! Es müssen nur wenige Variablen geändert werden.

2
frankV