2012-12-03 42 views
0

我使用下面的代码检测重复的标题 - WordPress的RPC

<?php 
      require("class-IXR.php"); 
      $client = new IXR_Client('http://domain.com/xmlrpc.php'); 

      $USER = 'user'; 
      $PASS = 'pass'; 

      $content['title'] = 'Test title'; 
      $content['categories'] = array("games"); 
      $content['description'] = '<p>Lorem ipsum dolor sit amet</p>'; 
      $content['custom_fields'] = array(array('key' => 'my_custom_fied','value'=>'yes')); 
      $content['mt_keywords'] = array('foo','bar'); 

      if (!$client->query('metaWeblog.newPost','', $USER,$PASS, $content, true)) 
      { 
       die('Error while creating a new post' . $client->getErrorCode() ." : ". $client->getErrorMessage()); 
      } 
      $ID = $client->getResponse(); 

      if($ID) 
      { 
       echo 'Post published with ID:#'.$ID; 
      } 

    ?> 

如何避免重复发帖例如title.For如果我已经有帖子标题为Test it发布使用WordPress。当我尝试张贴另一篇文章标题Test it它不应该发布。

P.s:我的博客中有1000篇文章。

回答

0
if (is_null(get_page_by_title($content['title'], OBJECT, 'post'))) { 

// Do your stuff in this case (no post with the same title) 

} 

else { 

// Do not create post 

} 
+0

辉煌:)爱你 –

+0

这将工作,如果你在WordPress内,但不在API。 – timgws

0

如果要检查使用WordPress的XML-RPC API重复WordPress的帖子,你将需要使用wp.getPosts获得已作出所有的WordPress的职位列表,然后循环通过所有的职位,以确保没有重复。

如在https://codex.wordpress.org/XML-RPC_WordPress_API/Posts中看到的,您需要先检索所有博客文章的列表,然后遍历所有博文,以确定post_title或post_name是否已设置。

$result = $client->query('wp.getPosts','', $USER, $PASS) 
if (!$result) { 
    die('Error while getting posts' . $client->getErrorMessage()); 
} 

$posts = $client->message->params[0]; 

$title_to_search_for = 'This is a duplicate title '; 

// loop through all of the $posts, see if the title is duped. 
$title_to_search_for = trim(strtolower($title_to_search_for)); 

$is_duplicate = false; 

foreach($posts as $post) { 
    if (trim(strtolower($post->post_title) === $title_to_search_for) 
     $is_duplicate = true; 

    if (trim(strtolower($post->post_name) === $title_to_search_for) 
     $is_duplicate = true; 
}