web-dev-qa-db-ja.com

インポート> RSS/WXR/XMLを使用して投稿を作成し、カスタムフィールドに値を渡します。

私の問題は簡単です。私は "フォトギャラリー"ページの画像のURLを含む投稿をたくさん作成する必要があります。私はRSSフィードとインポートから投稿を作成することについて多くを読みました。私は投稿の作成に成功しましたが、どういうわけか値をカスタムタイプに渡すことはできません。ギャラリーには2つのURLが必要です。1つは画像のサムネイル用、もう1つはフルサイズ用です。私が使っているコードはこんな感じです。

<?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>

投稿をエクスポートして生成されたxmlファイルを確認したときに、meta_keyを確認しました。それで私は私が親密にならなければならないことを知っています!明らかに私は何かが足りない。

これと一緒に行く一つの質問。これが正しく理解されれば、カスタムフィールドは個々の「メタキー」なのでしょうか。これは正解?

私は私が個々の記事を作成するのに必要な約1000の画像を持っていて、説明とカテゴリを完備しています。それらを "バッチ処理"できたならば、私は自分自身を多くの時間を節約し、人的ミスの高い可能性を取り除きたいと思います。私は本当に助けになったり、正しい方向に進んだりしてくれて本当にありがたいです。

2
frankV

私は答えが見つかるまで執拗に検索して読みました!結局のところ、使用する正しいものは、実際にはMetaWeblog APIとXMLRPCです。デフォルトでは無効になっているため、これらを有効にする必要があります。まず最初に、あなたの管理者パネルの設定メニューに行き、そして「書く」にナビゲートしてください。 [リモート公開]の下に[XML-RPC]チェックボックスが表示されるまでスクロールします。これが保存されると、ほとんどすべてのセットが保存されます。

特定のカスタムフィールドのメタ名を取得するには、投稿をエクスポートしてからそのxmlファイルを読む必要があります。これが私が使ったコードです:

<?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";
  ?>

これです!これで、php、javascript、Perlなどを使って、このファイルの作成を簡単に自動化できます。変更する変数はいくつかあります。

2
frankV