2009-08-29 10 views
6

Yardım, XMLRPC üzerinde metaweblogAPI kullanarak aşağıdaki perl komut dosyasını kullanarak özel alanlar içeren wordpress blogumda yeni bir yazı oluşturmaya çalışıyorum, ancak özel alanlarla ilgili bir sorun var gibi görünüyor. Sadece ikinci özel alan (genişlik) hiç yayınlanmış gibi görünüyor. Düzgün yayınlamak için "yükseklik" alamıyorum. Başka bir alan eklediğimde, "Anonim hashta tek sayıda öğe" hatası alıyorum. Bu basit bir şey olmalı - birileri akıl hastanemi sözdizimi kontrol eder mi? Teşekkürler.Perl'de neden "Anonim hashta tek sayıda öğe" uyarısı alıyorum?

#!/usr/bin/perl -w 
use strict; 
use RPC::XML::Client; 
use Data::Dumper; 

my $cli=RPC::XML::Client->new('http://www.sitename.com/wp/xmlrpc.php'); 

my $appkey="perl"; # doesn't matter 
my $blogid=1; # doesn't matter (except blogfarm) 

my $username="Jim"; 
my $passwd='_____'; 

my $text=<<'END'; 

This is the post content... 

You can also include html tags... 

See you! 
END 

my $publish=0; # set to 1 to publish, 0 to put post in drafts 

my $resp=$cli->send_request('metaWeblog.newPost', 
$blogid, 
$username, 
$passwd, 
{ 
    'title'  => "this is doodoo", 
    'description' => $text, 
    'custom_fields' => { 
    { "key" => "height", "value" => 500 }, 
    { "key" => "width", "value" => 750 } 
    }, 
}, 
$publish); 

exit 0; 
+0

http://stackoverflow.com/a/7083603/2015531 – ophidion

cevap

13

Teknik olarak geçerli sözdizimi olsa da, düşündüğünüz şeyi yapmıyor. Ne istediğinizi kesinlikle değil

'custom_fields' => { 
    'HASH(0x881a168)' => { "key" => "width", "value" => 750 } 
}, 

:

'custom_fields' => { 
    { "key" => "height", "value" => 500 }, 
    { "key" => "width", "value" => 750 } 
}, 

gibi bir şey kabaca eşittir. (0x881a168 bölümü değişecektir; aslında hashref'in depolandığı adres.)

Özel alanlar için doğru sözdiziminin ne olduğundan emin değilim. Custom_fields öğesini bir karma dizisine ayarlayan

'u deneyebilirsiniz. Ama bu doğru olmayabilir. send_request'un ne beklediğine bağlıdır.

+0

CJM kopyasının bu cevabını görün, rock! Öneriniz işe yaradı. Her iki özel alan da iyi yayınlanmış;) Çok teşekkürler! – Jim