2009-08-29 3 views
6

Je tente de créer un nouveau message dans mon blog wordpress avec des champs personnalisés en utilisant le script perl suivant en utilisant metaweblogAPI sur XMLRPC, mais il semble y avoir un problème avec les champs personnalisés. Seul le deuxième champ personnalisé (largeur) semble être affiché. Impossible d'obtenir la "hauteur" pour publier correctement. Lorsque j'ajoute un autre champ, j'obtiens l'erreur "Nombre impair d'éléments dans un hachage anonyme". Cela doit être quelque chose de simple - est-ce que quelqu'un vérifierait ma syntaxe? Merci.Pourquoi est-ce que je reçois un avertissement "Nombre impair d'éléments dans un hachage anonyme" dans Perl?

#!/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

Voir cette réponse de la copie d'un hashref http://stackoverflow.com/a/7083603/2015531 – ophidion

Répondre

13

Bien que la syntaxe soit valide, elle ne fait pas ce que vous pensez.

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

est à peu près équivalent à quelque chose comme:

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

qui est certainement pas ce que vous voulez. (La partie 0x881a168 variera, c'est en fait l'adresse où le hashref est stocké.)

Je ne suis pas sûr de la syntaxe correcte pour les champs personnalisés. Vous pouvez essayer

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

qui définira custom_fields à un tableau de hachages. Mais ce n'est peut-être pas juste. Cela dépend de ce que send_request attend.

+0

CJM, vous bercez! Votre suggestion a fonctionné. Les deux champs personnalisés publiés très bien;) Merci beaucoup! – Jim

Questions connexes