PHP XMLRPC for WordPress: Adding meta tags and description

I have been trying to add WordPress posts by XMLRPC calls. The code is working but the tags and categories are not setting.

I have tried almost every solution provided in every forum.

PS: I am getting a few of the variables from another application — that part is working correctly.

<?php 
include("lib/xmlrpc.inc");
$function_name = "wp.newPost";
$url = "http://website.com/xmlrpc.php";

$category = array('3','1');
$tags = array('tag1', 'tag2');

$client = new xmlrpc_client($url);
$client->return_type="phpvals";

$message = new xmlrpcmsg(
        $function_name, 
        array(
            new xmlrpcval(0, "int"), 
            new xmlrpcval("username", "string"), 
            new xmlrpcval("password", "string"), 
            new xmlrpcval(
                array(
                    "post_type" => new xmlrpcval("post", "string"), 
                    "post_status" => new xmlrpcval("draft", "string"), 
                    "post_title" => new xmlrpcval($_POST['title'], "string"), 
                    "post_author" => new xmlrpcval(1, "int"), 
                    //"post_excerpt" => new xmlrpcval("excerpt", "string"), 
                    "post_content" => new xmlrpcval($_POST['content'], "string"),
                    "category"    => new xmlrpcval($category, "int"),
                    "mt_keywords" => new xmlrpcval($tags, "string")

                    ), 
                "struct"
                )
            )
        );

$resp = $client->send($message);

if ($resp->faultCode()) echo 'KO. Error: '.$resp->faultString(); else echo "Post id is: " . $resp->value();
?>

1 Answer
1

The field for tags is mt_keywords, as reference see this ticket.

The field for the category is categories.

Important is it, that you have a array for the fields, like

$categories[0] = "cat1";
$categories[1] = "cat2";

$tags[0] = "tag1";
$tags[1] = "tag2";


$content[ 'categories' ] = $categories;
$content[ 'mt_keywords' ] = $tags;

As reference for each field it is better you use the source, not the online plattform. You should find it all in the class wp_xmlrpc_server.

Leave a Comment