wordpress 內(nèi)容備份鏡像站點建立方法及注意事項

作為蝦米級站長一枚忧设,實則是不懂代碼的菜鳥,由于自己的站點是小水管主機颠通,而且穩(wěn)定性也難以保障址晕,在很多訪客的建議下,也想建立一個內(nèi)容鏡像站點顿锰,以實現(xiàn)當(dāng)主站的主機維護時谨垃,能夠有一個備用站點讓訪客訪問

最先我是想能夠有一個共用的數(shù)據(jù)庫可以給兩個站點一起使用硼控,但百度查了資料后刘陶,發(fā)現(xiàn)這對于虛擬主機建站來說好像不適用。

直到找到了以下的代碼牢撼,可以實現(xiàn)源站發(fā)表文章時匙隔,自動在鏡像站點也發(fā)表出來。

第一步熏版,鏡像站根目錄創(chuàng)建一個命名為 post.php 的 php 文件牡直,代碼內(nèi)容:

//以下為代碼正文…

<?php?

//文章接收?

define('WP_USE_THEMES', false);?

require_once("wp-load.php");?

$key='123456'; //設(shè)置啟動API的密鑰

if($_POST['key']==$key){?

? ? $categorys=explode(',',$_POST['category']);?

? ? $category=array();?

? ? for($x=1;$x<count($categorys);$x++) {?

? ? $category[$x-1]=get_cat_ID($categorys[$x]);?

? ? }?

? ? $info = array(?

? ? 'post_title' => $_POST['title'],?

? ? 'post_content' => $_POST['content'],?

? ? 'post_status' => 'publish',?

? ? 'post_author' => 1, //發(fā)布文章的作者ID,1 為管理員?

? ? 'post_date' => $_POST['date'],?

? ? 'tags_input' => $_POST['tags'],?

? ? 'post_category' => $category,?

? ? 'post_type' => $_POST['type']?

? ? );?

? ? wp_insert_post( $info );?

}

第二步纳决,主站主題的 functions.php 文件的最后一個?>前加入已下代碼碰逸,并設(shè)置 key,修改 API 地址阔加。

//文章推送

add_action('publish_post', 'fanly_sync_post'); //鉤子饵史,在文章發(fā)布時執(zhí)行?

function fanly_sync_post($post_ID) {?

? ? $key='123456'; //輸入你設(shè)置的密鑰?

? ? $url='http://6.213721.xyz/post.php';//API地址,就是接受數(shù)據(jù)的那個站點

? ? $post_info = get_post($post_ID);?

? ? if ( $post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {?

? ? ? ? $title=$_POST['post_title'];?

? ? ? ? $content=$_POST['content'];?

? ? ? ? $date=$_POST['aa'].'-'.$_POST['mm'].'-'.$_POST['jj'].' '.$_POST['hh'].':'.$_POST['mn'].':'.$_POST['ss'];?

? ? ? ? $category='';?

? ? ? ? for($x=1;$x<count($_POST['post_category']);$x++) {?

? ? ? ? ? $category.=','.get_cat_name($_POST['post_category'][$x]);?

? ? ? ? }?

? ? ? ? $type=$_POST['post_type'];?

? ? ? ? $tags=str_replace('、',',',$_POST['tax_input']['post_tag']);?

? ? ? ? if($_POST['newtag']['post_tag']){?

? ? ? ? ? ? $tags.=','.str_replace('胜榔、',',',$_POST['newtag']['post_tag']);?

? ? ? ? }?

? ? ? ? $data = 'key='.$key.'&title='.$title.'&content='.$content.'&date='.$date.'&category='.$category.'&type='.$type.'&tags='.$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;?

? }?

}

這樣一來胳喷,在主站發(fā)表一篇文章后,鏡像站點也就會發(fā)表出來一篇文章了夭织,但也會有一些意外情況吭露,比如不是馬上發(fā)表出來,而是顯示計劃中尊惰,正常隔幾分鐘后會發(fā)表好讲竿,但也會有發(fā)表失敗,需要在后臺文章管理中弄屡,選擇該發(fā)表失敗文章题禀,狀態(tài)修改為已發(fā)布,更新即可膀捷。

一些意外情況的解決:

問題1迈嘹,由于主題升級后,functions.php代碼會被置換。用以上方法實現(xiàn)的內(nèi)容鏡像每次在主題升級后都需要修改functions.php代碼秀仲,這會造成麻煩融痛。

所以有如下解決辦法,代碼如下:

<?php

/*

Plugin Name: 小插件

Description: 給主題添加點小功能

Author: 云落

*/

//文章推送

add_action('publish_post', 'fanly_sync_post'); //鉤子神僵,在文章發(fā)布時執(zhí)行?

function fanly_sync_post($post_ID) {?

? ? $key='123456'; //輸入你設(shè)置的密鑰?

? ? $url='http://6.213721.xyz/post.php';//API地址,就是接受數(shù)據(jù)的那個站點

? ? $post_info = get_post($post_ID);?

? ? if ( $post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {?

? ? ? ? $title=$_POST['post_title'];?

? ? ? ? $content=$_POST['content'];?

? ? ? ? $date=$_POST['aa'].'-'.$_POST['mm'].'-'.$_POST['jj'].' '.$_POST['hh'].':'.$_POST['mn'].':'.$_POST['ss'];?

? ? ? ? $category='';?

? ? ? ? for($x=1;$x<count($_POST['post_category']);$x++) {?

? ? ? ? ? $category.=','.get_cat_name($_POST['post_category'][$x]);?

? ? ? ? }?

? ? ? ? $type=$_POST['post_type'];?

? ? ? ? $tags=str_replace('雁刷、',',',$_POST['tax_input']['post_tag']);?

? ? ? ? if($_POST['newtag']['post_tag']){?

? ? ? ? ? ? $tags.=','.str_replace('、',',',$_POST['newtag']['post_tag']);?

? ? ? ? }?

? ? ? ? $data = 'key='.$key.'&title='.$title.'&content='.$content.'&date='.$date.'&category='.$category.'&type='.$type.'&tags='.$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;?

? }?

}

?>

復(fù)制上面的代碼挑豌,最好是用Notepad ++等工具另存為php文件安券,打包成zip文檔,在wordpress插件安裝后臺上傳氓英,安裝并啟用侯勉。

這樣就是一個插件形式存在了,主題升級后不再有影響铝阐。

問題2址貌,有些主題編輯器是支持密碼可見付費可見等短代碼的,但短代碼在編輯模式跟輸出模式是不一樣的徘键,到了鏡像站的內(nèi)容會是輸出模式练对,有可能會輸出異常。

我的解決辦法也是采用小插件的辦法吹害,對這些代碼進行一個自動修改螟凭。代碼如下:

<?php

/*

Plugin Name: 小插件

Description: 給主題添加點小功能

Author: 云落

*/

//內(nèi)容文字替換

function wpdaxue_replace_text($text){

$replace = array(

// '原始文字' => '替換為這些'

'\"20\"]' => '"20"]',

'\"10\"]' => '"10"]',

'\"50\"]' => '"50"]'

);

$text = str_replace(array_keys($replace), $replace, $text);

return $text;

}

add_filter('the_content', 'wpdaxue_replace_text'); //正文

add_filter('the_excerpt', 'wpdaxue_replace_text'); //摘要

add_filter('comment_text', 'wpdaxue_replace_text'); //評論

?>

在此文中,使用到的代碼都是萬能的博主們提供的它呀,我只是對其進行了一個有效的整合螺男,來實現(xiàn)我的需求,在此感謝共享精神的博主們的辛勤付出纵穿!

經(jīng)驗分享下隧,首發(fā)于v2ex,歡迎轉(zhuǎn)載谓媒,但不得修改內(nèi)容淆院,謝謝!

代碼提供

感謝

@淚雪建站

@極客公園

@WordPress大學(xué)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末句惯,一起剝皮案震驚了整個濱河市土辩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宗弯,老刑警劉巖脯燃,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蒙保,居然都是意外死亡,警方通過查閱死者的電腦和手機欲主,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門邓厕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逝嚎,“玉大人,你說我怎么就攤上這事详恼〔咕” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵昧互,是天一觀的道長挽铁。 經(jīng)常有香客問我,道長敞掘,這世上最難降的妖魔是什么叽掘? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮玖雁,結(jié)果婚禮上更扁,老公的妹妹穿的比我還像新娘。我一直安慰自己赫冬,他們只是感情好浓镜,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劲厌,像睡著了一般膛薛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上补鼻,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天哄啄,我揣著相機與錄音,去河邊找鬼辽幌。 笑死增淹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乌企。 我是一名探鬼主播虑润,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼加酵!你這毒婦竟也來了拳喻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猪腕,失蹤者是張志新(化名)和其女友劉穎冗澈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陋葡,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡亚亲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捌归。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡肛响,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惜索,到底是詐尸還是另有隱情特笋,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布巾兆,位于F島的核電站猎物,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏角塑。R本人自食惡果不足惜蔫磨,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吉拳。 院中可真熱鬧质帅,春花似錦、人聲如沸留攒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炼邀。三九已至魄揉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拭宁,已是汗流浹背洛退。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杰标,地道東北人兵怯。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像腔剂,于是被迫代替她去往敵國和親媒区。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容