Typecho 导入文章


Typecho 导入文章

通过自定义的 PHP 脚本,你可以方便地将大量文章导入到 Typecho 中。以下代码基于Typecho 1.2.1版本。

<?php
// Typecho 的路径,根据你的实际情况修改
$typechoPath = '/srv/typecho/config.inc.php';

include_once $typechoPath;

$db=Typecho_Db::get();
$query=null;
$author="baby"; //用户登录名
$query=$db->select('uid','screenName')->from('table.users')->where('name = ?', $author);

$userData=$db->fetchRow($query);
$uid=0;
$screenName="";
    if(!empty($userData)){
        $uid=$userData['uid'];
$screenName=$userData['screenName'];
    }
    if($uid<=0){
        print_r('作者'.$author.'不存在');
        exit();
    }
    print_r( $screenName);
    
Typecho_Widget::widget('Widget_User')->to($user);
$user->simpleLogin($uid);

//文章的字段
$defParams = array(
    'title' => 'Your post title.',
    'text' => '<!--markdown-->Your post content.',
    'created' => strtotime('2023-07-01 18:06'),
    'authorId'=> $uid,
    'category' => array(1,2),
    'tags' => 'cat,dog',
    'allowComment' => '1',
    'allowPing' => '1',
    'allowFeed' => '1',
    'type' =>'post',
    // 其他字段...
);
    try{
        Typecho_Widget::widget('Widget_Contents_Post_Edit')->to($post);
        $post->writePost1($defParams);
    }catch (\Exception $ex){
        print_r($ex->getMessage());
    }
?>

然后修改var/Widget/Contents/Post下的Edit.php文件,增加writePost1()

public function writePost1($contents)
{
    $contents = self::pluginHandle()->write($contents, $this);
    $this->publish($contents);
    // 完成发布插件接口
    self::pluginHandle()->finishPublish($contents, $this);
    echo "发布成功:".$this->cid."\r\n";
}

大功告成,在执行脚本之前,确保备份好你的数据库和 Typecho 文件,以防发生意外情况。

声明:远行的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Typecho 导入文章


思想,不设终点。远行,让思想同行。