wordpress 的 wp2sinablog插件

来源:互联网 发布:红蜘蛛软件怎么退出 编辑:程序博客网 时间:2024/03/29 01:29

对 wp2sinablog 插件的源码分析可得:该插件只有在新建的wordpress文章发布时在新浪博客上建立同样的内容,不会自wordpress文章更新时同步更新, 可以研究一下 WLW(window live writer)、xmlrpc 、新浪博客的api,解决该问题。

源代码内容如下:

1.class.wp2sinablog.php

<?phpfunction make_newpost($post){$title=$post->post_title;if (strlen($title)==0){$title="无题  ";}$content=$post->post_content;$sendurl=get_option('wp2sinaxsend_url');if ($sendurl==1){$content="查看原文:<a href=".get_permalink($post_ID).">".get_permalink($post_ID)."</a><br/>".$content;}elseif($sendurl==2){$content.="<br/><br/>查看原文:<a href=".get_permalink($post_ID).">".get_permalink($post_ID)."</a>";}else{if (strlen($content)==0){$content="a blank ";}}$wp2sinabloguser=get_option('wp2sinabloguser');$wp2sinablogpass=get_option('wp2sinablogpass');if (strlen($wp2sinabloguser)>4){if (strlen($wp2sinablogpass)>5){$client->debug = false; $xmlclient = "http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php";$client = new IXR_Client($xmlclient);$content= wp_richedit_pre($content);$content=htmlspecialchars_decode($content);    $catlog=get_option('wp2sina_blog_class');     $catlog= array($catlog);$post1=array('title'=>$title,'description'=>$content,'categories'=>$catlog);$params = array(1,$wp2sinabloguser,$wp2sinablogpass,$post1,true); // Last parameter is 'true' which means post immideately, to save as draft set it as 'false'$client->query('metaWeblog.newPost', $params);$wp2sinaid=$client->getResponse();add_post_meta($post->ID,'_wp2sinaid',$wp2sinaid,true);unset($client);}}}function publish_post_2_sinablog($post_ID){$post=get_post($post_ID);$status=$post->post_status;if($post->post_type =="post"){if($status == "publish"){$wpsinaid=get_post_meta($post_ID,'_wp2sinaid',true);if (strlen($wpsinaid)<4){  make_newpost($post);}    }}}?>

2.class-wp2sinablog.php

<?phpfunction make_newpost($post){$title=$post->post_title;if (strlen($title)==0){$title="无题  ";}$content=$post->post_content;$sendurl=get_option('wp2sinaxsend_url');if ($sendurl==1){$content="查看原文:<a href=".get_permalink($post->ID).">".get_permalink($post->ID)."</a><br/>".$content;}elseif($sendurl==2){$content.="<br/><br/>查看原文:<a href=".get_permalink($post->ID).">".get_permalink($post->ID)."</a>";}else{if (strlen($content)==0){$content="a blank ";}}$wp2sinabloguser=get_option('wp2sinabloguser');$wp2sinablogpass=get_option('wp2sinablogpass');if (strlen($wp2sinabloguser)>4){if (strlen($wp2sinablogpass)>5){$client->debug = false; $xmlclient = "http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php";$client = new IXR_Client($xmlclient);$content= wp_richedit_pre($content);$content=htmlspecialchars_decode($content);    $catlog=get_option('wp2sina_blog_class');     $catlog= array($catlog);$post1=array('title'=>$title,'description'=>$content,'categories'=>$catlog);$params = array(1,$wp2sinabloguser,$wp2sinablogpass,$post1,true); // Last parameter is 'true' which means post immideately, to save as draft set it as 'false'$client->query('metaWeblog.newPost', $params);$wp2sinaid=$client->getResponse();add_post_meta($post->ID,'_wp2sinaid',$wp2sinaid,true);unset($client);}}}function publish_post_2_sinablog($post_ID){$post=get_post($post_ID);$status=$post->post_status;if($post->post_type =="post"){if($status == "publish"){$wpsinaid=get_post_meta($post_ID,'_wp2sinaid',true);if (strlen($wpsinaid)<4){  make_newpost($post);}    }}}?>

3. readme.txt

=== WP2Sinablog ===Contributors: StarhaiDonate link: http://wpto.starhai.net/Tags: sinablog,wp2sinablog,新浪博客,同步发布,sina,新浪Requires at least: 2.9Tested up to: 3.2Stable tag: 2.0.1同步发表 WordPress 博客日志到 新浪博客,初次安装必须设置后才能使用。== Description ==Version 2.0.1 功能1。支持将Wordpress中文章链接发布到新浪博客,并可选原文链接显示的位置。2。不支持将Wordpress中私密(private)文章发布到新浪博客(未经严格测试)。3。解决了以往同步到新浪博客排版混乱的问题。== Installation ==1. 上传 `wp2sinablog.php`  `class-wp2sinablog.php`到 `/wp-content/plugins/` 目录2. 在Wordpress后台控制面板"插件(Plugins)"菜单下激活wp2sinablog插件3. 在Wordpress后台控制面板"配置(Settings)->WP2Sinablog"菜单下设置插件的必须信息。(只有经过设置,插件才能正常使用)== Frequently Asked Questions === 1.为何保存设置后,发布文件目录设置中单选按钮没有选中 =如果你是第一次保存(或更改一个新的)新浪博客的用户名/密码,可能会出现此问题。您只需要选择类别后再按一次保存即可。= 2.为何设置用户名和密码的时候老提示新浪用户名和密码错误,而登陆新浪是没错的 =首先请检查您的输入是否正确。如输入时正确的,出现错误 `发布文件目录设置 尝试登录新浪博客失败,请检查用户名/密码是否正确!  ` 可能是设置用户名时输入了中文用户名,请更换成您的新浪邮箱来填写`新浪博客的登录名`。如我的新浪博客用户名为`星海茫茫`,对应的新浪邮箱为`aofa198@sina.com`,在插件设置`新浪博客的登录名`时不能填写`星海茫茫`,应填写`aofa198@sina.com`.== Changelog === 2.0.1 =Version 2.0.1  解决了同步后的排版问题。* 不再采用Curl函数,改使用IXR函数库,更利于安装使用* 如果提示找不到class-IXR.php,请将插件第一句中`ABSPATH.'`更改为你的Wordpress安装的绝对目录。= 1.0.8 =Version 1.0.8  重新写过代码,更改了发送到新浪博客的方式* 不再采用Curl函数,改使用IXR函数库,更利于安装使用* 如果提示找不到class-IXR.php,请将插件第一句中`ABSPATH.'`更改为你的Wordpress安装的绝对目录。= 1.0.7 =Version 1.0.7 可能存在不能发送文章到新浪私密博客的问题,请慎重选择发送私密博客选项。* 修正部分主机关于curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);错误提示* 解决部分主机下 WLW 不能发布文章的问题= 1.0.6 =* 解决目录读取不全的问题* 修正部分主机wp2sinablog.php on line 109,wp2sinablog.php on line 90的错误提示* 解决部分主机下 WLW 不能发布文章的问题= 1.0.5 =为解决插件不能使用,紧急放出Beta版。Version 1.0.5并未经过严格测试,如有bug请告知。不会对博客和新浪造成损害,但可能会出现私密博客同步到新浪= 版本 1.0.4 =* 增加将Wordpress中文章的标签发布到新浪博客* 增加6个新的新浪排行榜选项,分别为星座、时尚、休闲、美食、育儿、教育= 版本 1.0.3 =* 增加将Wordpress中文章链接发布到新浪博客,并可选原文链接显示的位置= 版本 1.0.2 =* 增加将Wordpress中文章以`私密博客`方式发布到新浪博客= 版本 1.0.1 =* 在配置选项里增加服务器cURL库的判断,不满足插件运行条件,提示退出* 修正新发布文章时,WLW(Window Live Writer)错误提示== Upgrade Notice === 2.0.1 =Version 2.0.1  解决了同步后的排版问题。* 不再采用Curl函数,改使用IXR函数库,更利于安装使用* 如果提示找不到class-IXR.php,请将插件第一句中`ABSPATH.'`更改为你的Wordpress安装的绝对目录。= 1.0.8 =Version 1.0.8  重新写过代码,更改了发送到新浪博客的方式。* 不再采用Curl函数,改使用IXR函数库,更利于安装使用* 如果提示找不到class-IXR.php,请将插件第一句中`ABSPATH.'`更改为你的Wordpress安装的绝对目录。= 1.0.7 =Version 1.0.7 可能存在不能发送文章到新浪私密博客的问题,请慎重选择发送私密博客选项。* 修正部分主机关于curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);错误提示* 解决部分主机下 WLW 不能发布文章的问题= 1.0.6 =Version 1.0.6 可能存在不能发送文章到新浪私密博客的问题,请慎重选择发送私密博客选项。* 解决目录读取不全的问题* 修正部分主机wp2sinablog.php on line 109,wp2sinablog.php on line 90的错误提示* 解决部分主机下 WLW 不能发布文章的问题= 1.0.5 =为解决插件不能使用,紧急放出Beta版。Version 1.0.5并未经过严格测试,如有bug请告知。不会对博客和新浪造成损害,但可能会出现私密博客同步到新浪= 1.0.4 =* 增加将Wordpress中文章的标签发布到新浪博客* 增加6个新的新浪排行榜选项,分别为星座、时尚、休闲、美食、育儿、教育= 1.0.3 =增加将Wordpress中文章链接发布到新浪博客,并可选原文链接显示的位置= 1.0.2 =增加将Wordpress中文章以`私密博客`方式发布到新浪博客= 1.0.1 =修正新发布文章时,WLW(window live writer)错误提示,全面支持WLW(Window Live Writer)发布文章.

4. wp2sinablog.php

<?php/*Plugin Name: WP2SinablogPlugin URI: http://wpto.starhai.net/Description: 同步发表 WordPress 博客日志到 新浪博客,初次安装必须设置后才能使用。Version: 2.0.1Author: StarhaiAuthor URI: http://wpto.starhai.net/*//*  Copyright 2010-2012  Starhai   (email : i@starhai.net)    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License, version 2.*/include_once(ABSPATH.'/wp-includes/class-IXR.php');include_once("class-wp2sinablog.php");// Hook for adding admin menusadd_action('admin_menu', 'mt_add_sinapages');add_action('publish_post', 'publish_post_2_sinablog');add_action('xmlrpc_public_post', 'publish_post_2_sinablog');//add_action('future_to_publish ','future_publish_post_2_sinablog');// action function for above hookfunction mt_add_sinapages() {    //call register settings functionadd_action( 'admin_init', 'register_mysettings' );// Add a new submenu under Options:    add_options_page('WP2Sinablog Options', 'WP2Sinablog', 'administrator', 'wpsinablog', 'mt_options_page');}function register_mysettings() {//register our settingsregister_setting( 'WP2Sinablog-settings-group', 'wp2sinabloguser' );register_setting( 'WP2Sinablog-settings-group', 'wp2sinablogpass' );register_setting( 'WP2Sinablog-settings-group', 'wp2sinaxsend_url' );    register_setting( 'WP2Sinablog-settings-group', 'wp2sina_blog_class' );}// mt_options_page() displays the page content for the Test Options submenufunction mt_options_page() {?><div class="wrap"><h2>WP2Sinablog 选项</h2><br />设置仅适用于新浪博客,不支持Wordpress中<b>private</b>属性的文章发布到新浪博客。<br/><br/><form method="post" action="options.php">  <?php settings_fields( 'WP2Sinablog-settings-group' ); ?>   <table class="form-table">   <tr valign="top">        <th scope="row">新浪博客的登录名</th>        <td><input name="wp2sinabloguser" type="text" id="wp2sinabloguser" value="<?php form_option('wp2sinabloguser'); ?>" class="regular-text" /></td></tr><tr valign="top">        <th scope="row">新浪博客的登录密码</th>        <td><input name="wp2sinablogpass" type="password" id="wp2sinabloguser" value="<?php form_option('wp2sinablogpass'); ?>" class="regular-text" /></td></tr><tr valign="top">        <th scope="row">发布文件目录设置</th>        <td><?php$wp2sinabloguser=get_option('wp2sinabloguser');$wp2sinablogpass=get_option('wp2sinablogpass');if (strlen($wp2sinabloguser)>3){if (strlen($wp2sinablogpass)>3){$client->debug = false;   //开发测试时设置为true,api完成上线后改为false  $xmlclient = "http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php";$client = new IXR_Client($xmlclient); $params = array(0,$wp2sinabloguser,$wp2sinablogpass); if (!$client->query("metaWeblog.getCategories", $params))  { ?> <font color="red">尝试登录新浪博客失败,请检查用户名/密码是否正确!</font></b><?php  }  else { $catarrays=$client->getResponse();  if (count($catarrays)>0) { foreach($catarrays as $catarray) { $catarrayid=$catarray['categoryId'];  $catarrayname=$catarray['categoryName']; ?>  <input name="wp2sina_blog_class" value="<?php echo $catarrayname; ?>" id="componentSelect<?php echo $catarrayid; ?>" type="radio" <?php checked($catarrayname, get_option('wp2sina_blog_class')); ?> >     <label for="componentSelect<?php echo $catarrayid; ?>"><?php echo $catarrayname; ?></label><?php }}else{ echo "您的新浪博客只存在默认目录。"; }  } unset($client);}}?></td></tr>          <tr valign="top">        <th scope="row">原文链接设置</th>        <td><input name="wp2sinaxsend_url"  value="0" <?php checked(0, get_option('wp2sinaxsend_url')); ?> id="cwp2sinaxsend_url1" type="radio"><label for="cwp2sinaxsend_url1">不发送</label><input name="wp2sinaxsend_url" value="1" <?php checked(1, get_option('wp2sinaxsend_url')); ?> id="cwp2sinaxsend_url2" type="radio"><label for="cwp2sinaxsend_url2">发送(链接在文章头部)</label><input name="wp2sinaxsend_url" value="2" <?php checked(2, get_option('wp2sinaxsend_url')); ?> id="cwp2sinaxsend_url3" type="radio"><label for="cwp2sinaxsend_url3">发送(链接在文章尾部)</label></td></tr>    </table>  <p class="submit">    <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />    </p></form></div><?php}?>
0 0
原创粉丝点击