在尝试使用xmlrpc创建新帖子时,我可以获得帖子ID吗?

时间:2016-11-11 作者:ExistNot

当您尝试手动制作帖子时,例如:example。com/wp-admin/post-new。php?p={postid}已设置。

我试图做的是在尝试使用xmlrpc创建新帖子时获取{postid},这可能吗?

这是我正在使用的代码。我可以在写了一篇新文章后获得postID,但我无法获得{postID}。我想把它放在$pcontent上。

Update: I really can\'t get the postID it echo automatically when your code executed sucessfully

<?php
$blogid = 0;
$username = \'admin\';
$password = \'123\';
$method = \'wp.newPost\';
$title = "TEST";
$pcontent = "I\'m the post content.";
$categories = array(\'Cat 1\', \'Cat 2\');
$post_status = \'publish\';  
$custom_fields = array(\'cccId\' => \'12345\', \'cccType\' => \'news\');
$content = array(
                \'post_type\' => \'post\',
                \'post_status\' => $post_status,
                \'post_title\' => $title,
                \'post_content\' => $blogid,
                \'terms_names\' => array(\'category\'=>$categories),
                \'custom_fields\' => $custom_fields
            );

$parameters = array($blogid, $username, $password, $content);
$response = sendRequest($method, $parameters);

function sendRequest($methodName, $parameters)  {
$request = xmlrpc_encode_request($methodName, $parameters);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, "localhost/wp/xmlrpc.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$results = curl_exec($ch);
$results = print_r(xmlrpc_decode($results));
curl_close($ch);

return $results;
}
// After the code executed successfully I can get the postID by echo $blog_id which return the postID correctly ;
// If I try to put it inside the code it returns 0;  

?>

1 个回复
最合适的回答,由SO网友:Jen 整理而成

这是不可能的。post id仅在数据库中创建post期间创建;如果在点击“发布”或“另存为草稿”之前在管理编辑屏幕中看到帖子id,则自动保存会为您创建记录。

如果您“伪造”获取下一个post id(例如从数据库中获取最高的id号,然后添加一个),则存在冲突或竞争条件的风险-如果在获取下一个id和创建数据库行之间创建了任何其他记录,则您的id将无效且不正确,或者无法保存。

您需要保存帖子,然后在保存后编辑帖子,以便在需要的位置添加帖子id。