wordpress 火车头发布模块

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>免登陆 WordPress 发布接口</title>
</head>
<body >
<p>
最新版本或者意见建议请访问 
本接口主要实现了不登陆Wordpress直接发文的功能,并扩展了一些辅助选项。<br/>
<ul>
<li>随机时间安排与预约发布功能: 可以设定发布时间以及启用预约发布功能</li>
<li>服务器时间与博客时间的时区差异处理。这特别适合在国外服务器上的博客</li>
<li>永久链接的自动翻译设置。根据标题自动翻译为英文并进行seo处理</li>
<li>多标签处理(多个标签可以用火车头默认的tag|||tag2|||tag3的形式)</li>
<li>增加了发文后ping功能</li>
<li>增加了“pending review”的设置</li>
</ul>
</p>
<p>
<form action="hm-locowp.php?action=save&secret=abcd1234s" method="post">
标题:<input type="text" name="post_title" value="WordPress免登录发布接口hm-locowp"><br/>
分类:<input type="text" name="post_category" value="1"><br/>
时间:<input type="text" name="post_date" value=""> (YYYY-MM-DD 格式,留空则自动计算)<br/>
Tag: <input type="text" name="tag" value="test,hamo-cn,locowp">(以逗号分割多个)<br/>
内容:<br/>
<textarea name="post_content"> </textarea></br>
<input type="submit" value="提交">
</form>
</p>
<body>
<?php
/*   Wordpress-Post-Interface-v3.1   (2010.08.03)

     WordPress免登录发布接口,支持Wordpress2.5+版本。最新验证支持Wordpress3.x
     适用于火车头采集器等任意采集器或脚本程序进行日志发布。
     
     功能:
      1. 随机时间安排与预约发布功能: 可以设定发布时间以及启用预约发布功能
      2. 自动处理服务器时间与博客时间的时区差异
      3. 永久链接的自动翻译设置。根据标题自动翻译为英文并进行seo处理
      5. 多标签处理(多个标签可以用火车头默认的tag|||tag2|||tag3的形式)
      6. 增加了发文后ping功能
      7. 增加了“pending review”的设置 
      8. 增加了多作者功能,发布参数中指定post_author
      9. 增加了自定义域功能,发布参数指定post_meta_list=key1$$value1|||key2$$value2,不同域之间用|||隔开,名称与内容之间用$$隔开。      
     
     使用说明:(按照需求修改配置参数)
     $post_author    = 1;          //作者的id,默认为admin
     $post_status    = "publish"; //"future":预约发布,"publish":立即发布,"pending":待审核
     $time_interval  = 60;        //发布时间间隔,单位为秒 。可是设置随机数值表达式,如如12345 * rand(0,17)
     $post_next      = "next"; //now:发布时间=当前时间+间隔时间值 
                               //next: 发布时间=最后一篇时间+间隔时间值
     $post_ping      = false;  //发布后是否执行ping
     $translate_slug = false;  //是否将中文标题翻译为英文做slug
     $secretWord     = 'abcd1234s';  //接口密码,如果不需要密码,则设为$secretWord=false ;
     
     
*/

//-------------------配置参数开始,根据需要修改-------------------------
$post_author_default    = 1;         
$post_status    = "future"; 
$time_interval  = 86400 * rand(0,100);        
$post_next      = "now"; 
$post_ping      = false;      
$translate_slug = false;
$secretWord     = false;

//-------------------配置参数结束,以下请勿修改-------------------------
if(isset($_GET['action'])){ 
    $hm_action=$_GET['action'];
}
else{
    die ("操作被禁止,详情请访问<a href='http://www.hamo.cn'>http://www.hamo.cn</a>");
}

$post=$_POST;
include "../wp-config.php"; 
if ( get_magic_quotes_gpc() ) {
    $post = array_map( 'stripslashes_deep', $_POST );  //by  wind
}

if($post_ping) require_once("../wp-includes/comment.php");

if( !class_exists("Snoopy") )    require_once ("../wp-includes/class-snoopy.php");
function hm_debug_info($msg)
{
    global $logDebugInfo;
    if($logDebugInfo) echo $msg."<br/>\n";
}

function hm_tranlate($text){
    $snoopy = new Snoopy;
    $url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".urlencode($text)."&langpair=zh-CN%7Cen";
    $submit_vars["text"] = $text;
    $submit_vars["ie"] = "UTF8"; 
    $submit_vars["hl"] = "zh-CN"; 
    $submit_vars["langpair"] = "zh|en"; 
    $snoopy->submit($url,$submit_vars);
    $htmlret = $snoopy->results;
    $htmlret = explode('translatedText',$htmlret);
    $htmlret = explode('}',$htmlret[1]);
    $htmlret = $htmlret[0];
    $htmlret = str_replace('"','',$htmlret);
    $htmlret = str_replace(':','',$htmlret);
    return $htmlret;
}

function hm_print_catogary_list()
{
    $cats = get_categories("hierarchical=0&hide_empty=0");
    foreach ((array) $cats as $cat) {
        echo '<<<'.$cat->cat_ID.'--'.$cat->cat_name.'>>>';    
    }
}

function hm_get_post_time($post_next="normal")
{
    global $time_interval;
    global $wpdb;

    $time_difference = absint(get_option('gmt_offset')) * 3600;
    $tm_now = time()+$time_difference;
    
    if ($post_next=='now'){
        $tm=time()+$time_difference; 
    }
    else //if ($post_next=='next')
    {
        $tm = time()+$time_difference;
          $posts = $wpdb->get_results( "SELECT post_date FROM $wpdb->posts ORDER BY post_date DESC limit 0,1" );
        foreach ( $posts as $post )
        {
            $tm=strtotime($post->post_date);
        }
    }
    return $tm+$time_interval;
}

function hm_publish_pending_post()
{
    global $wpdb;
    $tm_now = time()+absint(get_option('gmt_offset')) * 3600;
    $now_date=date("Y-m-d H:i:s",$tm_now);
    $wpdb->get_results( "UPDATE $wpdb->posts set `post_status`='publish' WHERE `post_status`='pending' and `post_date`<'$now_date'" );
}

function hm_add_category($post_category)
{
    if(!function_exists('wp_insert_category')) @include "../wp-admin/includes/taxonomy.php";
    global $wpdb;
    $post_category_new=array();
    $post_category_list= array_unique(explode(",",$post_category));
    foreach($post_category_list as $category)
    {
        $cat_ID =intval($category);
        if($cat_ID==0)
        {
            $category = $wpdb->escape($category);
            $cat_ID = wp_insert_category(array('cat_name' => $category));
        }
        array_push($post_category_new,$cat_ID);
    }
    return $post_category_new;
}

function hm_strip_slashes($str){
//if (get_magic_quotes_gpc()) return stripslashes_deep($str);
return $str;
}
function hm_strip_slashes_new($string, $force = 0) {
    !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
    if(!MAGIC_QUOTES_GPC || $force) {
        if(is_array($string)) {
            foreach($string as $key => $val) {
                $string[$key] = daddslashes($val, $force);
            }
        } else {
            $string = addslashes($string);
        }
    }
    return $string;
}

function hm_do_save_post($post_detail)
{
    global $post_author,$post_ping,$post_status,$translate_slug,$autoAddCategory,$post_next;
    extract($post_detail);

    $post_title=trim(hm_strip_slashes($post_title));
    $post_name=$post_title;
    if($translate_slug) $post_name=hm_tranlate($post_name);
    $post_name=sanitize_title( $post_name);
    if( strlen($post_name) < 2 ) $post_name="";
    
    $post_content=hm_strip_slashes($post_content);
    
    $tags_input=str_replace("|||",",",$tags_input);
    
    if(isset($post_date) &&$post_date)
  {
    $post_date_gmt=$post_date;
    $post_status='publish';
  }
  else
  {
     $tm=hm_get_post_time($post_next); 
    $time_difference = absint(get_option('gmt_offset')) * 3600;
    $post_date=date("Y-m-d H:i:s",$tm);
    $post_date_gmt = gmdate('Y-m-d H:i:s', $tm-$time_difference);
    if($post_status=='next') $post_status='publish';
  }
    
    $post_category=hm_add_category($post_category);
    
    $post_data = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_name','tags_input');
    $post_data = add_magic_quotes($post_data);
    $postID = wp_insert_post($post_data);
    
    if(!empty($post_meta_list)){
         $post_meta_array= array_unique(explode("|||",$post_meta_list));
         foreach($post_meta_array as $ppm)
         {
            $pp2=explode("$$",$ppm);
            if(!empty($pp2[0])&&!empty($pp2[1])) add_post_meta($postID,$pp2[0],$pp2[1],true);
         }
    }

    if($post_ping)  generic_ping();
}

if($hm_action== "list")
{
    hm_print_catogary_list();
}
elseif($hm_action== "update")
{
    hm_publish_pending_post();
}
elseif($hm_action == "save" /*&&isset($_GET['secret'])&&$_GET['secret'] == $secretWord*/)
{
    if (isset($secretWord)&&($secretWord!=false)){
        if(!isset($_GET['secret']) || $_GET['secret'] != $secretWord)
        {
            die('接口密码错误,请修改配置文件或者修改发布参数,保持两者统一。');
        }
    }
    
    //$post=$_POST;
    
    extract($post);
    if($post_title=='[标签:标题]'||$post_title=='') die('标题为空');
    if($post_content=='[标签:内容]'||$post_content=='') die('内容为空');
    if($post_category=='[分类id]'||$post_category=='') die('分类id为空');
    if($tag=='[标签:SY_tag]'){$tag='';}
    if(!isset($post_date) ||strlen($post_date)<8) $post_date=false;
    if(!isset($post_author)) $post_author=$post_author_default;
    if(!isset($post_meta_list)) $post_meta_list="";

    hm_do_save_post(array('post_title'=>$post_title,
  'post_content'=>$post_content,
  'post_category'=>$post_category,
  'tags_input'=>$tag,
  'post_date'=>$post_date,
  'post_author'=>$post_author,
  'post_meta_list'=>$post_meta_list));
    echo '发布成功';
}
else
{
    echo '非法操作['.$hm_action.']';
}
?>

 

posted @ 2022-11-23 17:21  珊瑚贝博客  阅读(506)  评论(0编辑  收藏  举报