2012-12-03 3 views
0

외부 서버에서 양식을 제출하고 wordpress에 블로그 게시물로 제출을 추가하는 PHP 파일을 작성하는 것이 가능한지 궁금합니다. 파일은 post-> ID를 리턴해야합니다. 감사합니다Wordpress Forms

+0

http://codex.wordpress.org/Function_Reference/wp_insert_post는 – loQ

+0

덕분에 그것이 iframe이란도 해결책이 될 수 –

+0

갈 줄 것이다 도움이 될 수 있습니다. –

답변

1

양식을 원격 서버에서 처리하려면 원격으로 XMLRPC를 통해 WordPress에 제출 양식을 추가 할 수 있습니다.

예를 다음과 같이

<?php 

class XMLRPClientWordPress 
{ 

    var $XMLRPCURL = ""; 
    var $UserName = ""; 
    var $PassWord = ""; 

    // constructor 
    public function __construct($xmlrpcurl, $username, $password) 
    { 
     $this->XMLRPCURL = $xmlrpcurl; 
     $this->UserName = $username; 
     $this->PassWord = $password; 

    } 
    function send_request($requestname, $params) 
    { 
     $request = xmlrpc_encode_request($requestname, $params); 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $request); 
     curl_setopt($ch, CURLOPT_URL, $this->XMLRPCURL); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 1); 
     $results = curl_exec($ch); 
     curl_close($ch); 
     return $results; 
    } 

    function create_post($title,$body,$category,$keywords='',$encoding='UTF-8') 
    { 
     $title = htmlentities($title,ENT_NOQUOTES,$encoding); 
     $keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding); 

     $content = array(
      'title'=>$title, 
      'description'=>$body, 
      'mt_allow_comments'=>0, // 1 to allow comments 
      'mt_allow_pings'=>0, // 1 to allow trackbacks 
      'post_type'=>'post', 
      'mt_keywords'=>$keywords, 
      'categories'=>array($category) 
     ); 
     $params = array(0,$this->UserName,$this->PassWord,$content,true); 

     return $this->send_request('metaWeblog.newPost',$params); 

    } 

    function create_page($title,$body,$encoding='UTF-8') 
    { 
     $title = htmlentities($title,ENT_NOQUOTES,$encoding); 

     $content = array(
      'title'=>$title, 
      'description'=>$body 
     ); 
     $params = array(0,$this->UserName,$this->PassWord,$content,true); 

     return $this->send_request('wp.newPage',$params); 
    } 

    function display_authors() 
    { 
     $params = array(0,$this->UserName,$this->PassWord); 
     return $this->send_request('wp.getAuthors',$params); 
    } 

    function sayHello() 
    { 
     $params = array(); 
     return $this->send_request('demo.sayHello',$params); 
    } 

} 

if(trim($_POST['subject'])=='' || trim($_POST['content'])==''){ 
    die('All fields are required.'); 
} 

$xmlrpc = new XMLRPClientWordPress("http://yoursite.com/xmlrpc.php" , "username" , "password"); 

$xmlrpc->create_post(mb_convert_encoding(stripslashes($_POST['subject']), 'HTML-ENTITIES', 'UTF-8'), mb_convert_encoding(htmlentities(stripslashes($_POST['content']), ENT_COMPAT, 'UTF-8'), 'HTML-ENTITIES', 'UTF-8'), 1); 

echo 'Post successful!'; 

?> 
+0

이 파일을 보내 주셔서 감사합니다.하지만 어떻게 post-> ID를 반환합니까? –

+0

실수가 아니라면 $ xmlrpc-> create_post()가 게시물 ID가 포함 된 내용을 반환해야합니다. var_dump()를 사용해보십시오. – mushroom