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 文件,以防发生意外情况。
Comments | NOTHING