Home >CMS Tutorial >WordPress >wordpress multisite settings synchronization articles

wordpress multisite settings synchronization articles

尚
Original
2019-07-16 13:53:505808browse

wordpress multisite settings synchronization articles

Idea: Create an API on another WordPress site, use cURL to simulate POST request API when publishing the article, and use the wp_insert_post() function to create the article. Supports synchronization of article titles, content, types, categories, and tags. Category synchronization requires that another site also creates a category with the same name. The alias and ID do not need to be the same.

Create a php file named post.php in the root directory of another site. The code is as follows:

//以下为代码正文…
<?php
//文章接收
define(&#39;WP_USE_THEMES&#39;, false);
require_once("wp-load.php");
$key=&#39;123456&#39;; //设置启动API的密钥
if($_POST[&#39;key&#39;]==$key){  
    $categorys=explode(&#39;,&#39;,$_POST[&#39;category&#39;]);  
    $category=array();  
    for($x=1;$x<count($categorys);$x++) {  
     $category[$x-1]=get_cat_ID($categorys[$x]);  
    }  
    $info = array(  
    &#39;post_title&#39; => $_POST[&#39;title&#39;],  
    &#39;post_content&#39; => $_POST[&#39;content&#39;],  
    &#39;post_status&#39; => &#39;publish&#39;,  
    &#39;post_author&#39; => 1, //发布文章的作者ID,1 为管理员  
    &#39;post_date&#39; => $_POST[&#39;date&#39;],  
    &#39;tags_input&#39; => $_POST[&#39;tags&#39;],  
    &#39;post_category&#39; => $category,  
    &#39;post_type&#39; => $_POST[&#39;type&#39;]  
    );  
    wp_insert_post( $info );  }

Then add it before the last ?> of the theme’s functions.php file The code has been downloaded, the key has been set, and the API address has been modified

//文章推送
add_action(&#39;publish_post&#39;, &#39;fanly_sync_post&#39;); //钩子,在文章发布时执行  
function fanly_sync_post($post_ID) {  
    $key=&#39;www.exiang2.com&#39;; //输入你设置的密钥  
    $url=&#39;http://www.domain.com/post.php&#39;;//API地址,就是接受数据的那个站点
    $post_info = get_post($post_ID);  
    if ( $post_info->post_status == &#39;publish&#39; && $_POST[&#39;original_post_status&#39;] != &#39;publish&#39; ) {  
        $title=$_POST[&#39;post_title&#39;];  
        $content=$_POST[&#39;content&#39;];  
        $date=$_POST[&#39;aa&#39;].&#39;-&#39;.$_POST[&#39;mm&#39;].&#39;-&#39;.$_POST[&#39;jj&#39;].&#39; &#39;.$_POST[&#39;hh&#39;].&#39;:&#39;.$_POST[&#39;mn&#39;].&#39;:&#39;.$_POST[&#39;ss&#39;];  
        $category=&#39;&#39;;  
        for($x=1;$x<count($_POST[&#39;post_category&#39;]);$x++) {  
          $category.=&#39;,&#39;.get_cat_name($_POST[&#39;post_category&#39;][$x]);  
        }  
        $type=$_POST[&#39;post_type&#39;];  
        $tags=str_replace(&#39;、&#39;,&#39;,&#39;,$_POST[&#39;tax_input&#39;][&#39;post_tag&#39;]);  
        if($_POST[&#39;newtag&#39;][&#39;post_tag&#39;]){  
            $tags.=&#39;,&#39;.str_replace(&#39;、&#39;,&#39;,&#39;,$_POST[&#39;newtag&#39;][&#39;post_tag&#39;]);  
        }  
        $data = &#39;key=&#39;.$key.&#39;&title=&#39;.$title.&#39;&content=&#39;.$content.&#39;&date=&#39;.$date.&#39;&category=&#39;.$category.&#39;&type=&#39;.$type.&#39;&tags=&#39;.$tags;  
        $ch = curl_init (); //cURL模拟POST  
        curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );  
        curl_setopt ( $ch, CURLOPT_POST, TRUE );  
        curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );  
        curl_setopt ( $ch, CURLOPT_URL, $url );  
        curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);  
        $ret = curl_exec ( $ch );  
        curl_close ( $ch );  
        return $ret;  
   }  }

For more wordpress-related technical articles, please visit the wordpress tutorial column to learn!

The above is the detailed content of wordpress multisite settings synchronization articles. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn