紅穆ノート
レコメンド プログラムノート WordPressからEMPIRECMSへのデータ移行・セクション移行用コード
プログラムノート wordpress

WordPressからEMPIRECMSへのデータ移行・セクション移行用コード

WordPressからEMPIRECMSへのデータ移行・セクション移行用コード

config.php

 隐藏内容:会员可查看
<?php
define('DB_NAME', 'root');
define('DB_USER', 'root');
define('DB_PASSWORD', 'RspC7M8seHywXZBW');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
// 检测连接
if (!$conn = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
die("<b>PHP链接MYSQL数据库出现错误!请检查配置!</b>");
}
// //选择数据库
// if(!mysqli_select_db($conn,DB_NAME)){
// die("<b>PHP选择MYSQL数据库出现错误!请检查配置!</b>");
// }
//设置字符集
mysqli_set_charset($conn,DB_CHARSET);

function bq_replac($html){
$html = preg_replace('/{eyou:weapp\s+type=[\s\'"]+default[\s\'"]+\/}/s','',$html);
$html = preg_replace('/{\$eyou.field.typeid\|gettoptype=###,[\s\'"]+typename[\s\'"]+}/','[!--bclass.name--]',$html);
return $html;
}
function str_replace_once($needle, $replace, $haystack) {//只替换一次字符串
$pos = strpos($haystack, $needle);
if ($pos === false) {
return $haystack;
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}

function turncate($dbname,$dbtable){
global $conn;
if(mysqli_query($conn, "TRUNCATE `{$dbname}`.`{$dbtable}`")){
echo "{$dbname}库{$dbtable}表已清空<br>";
}else{
echo "{$dbname}库{$dbtable}表清空失败<br>";
}
}
function insert_sql($sql){
global $conn;
if(mysqli_query($conn, $sql)){
echo "插入成功<br>";
}else{
echo "插入失败{$sql}<br>";
}
}

function copyDirectory($src, $dst) {
// 检查源目录是否存在并且是否是目录
if (!is_dir($src)) {
return false;
}

// 检查目标目录是否存在并且是否是目录
if (!is_dir($dst)) {
mkdir($dst);
}

// 打开源目录
$dirHandle = opendir($src);

// 循环读取源目录下的文件和目录,复制到目标目录
while (false !== ($file = readdir($dirHandle))) {
if ($file != "." && $file != "..") {
$srcFile = $src . "/" . $file;
$dstFile = $dst . "/" . $file;

if (is_dir($srcFile)) {
copyDirectory($srcFile, $dstFile); // 递归复制子目录
} else {
copy($srcFile, $dstFile);
}
}
}

closedir($dirHandle);

return true;
}

function ToSql($sql){
global $conn;
$r = $conn->query($sql);
if($r){
echo '执行成功:'.$sql.'<br>';
}else{
echo $sql;
}
}
function deleteFiles($dir) {
$files = glob("$dir/*"); // 查找当前目录下的所有文件和目录
foreach($files as $file) {
if(is_file($file)) {
unlink($file); // 删除不需要的文件
} elseif(is_dir($file)) {
deleteFiles($file); // 递归处理子目录
}
}
}
function importSqlZip($remoteUrl, $dbName, $dbUser, $dbPass, $dbHost = 'localhost', $sqlDir = __DIR__.'/path/') {
// 创建一个临时文件用于保存下载的 Zip 文件
$tempZip = tempnam(sys_get_temp_dir(), 'sql_zip_');

// 下载远程 Zip 文件并保存到本地
$fp = fopen($tempZip, 'w');
$ch = curl_init($remoteUrl);
curl_setopt($ch, CURLOPT_FILE, $fp);
$success = curl_exec($ch);
curl_close($ch);
fclose($fp);

if (!$success) {
throw new Exception('Failed to download the remote SQL ZIP file.');
}
// 创建指定目录
if (!mkdir($sqlDir, 0777, true)) {
throw new Exception('Failed to create directory.');
}

// 解压缩文件到指定目录
$zip = new ZipArchive();
if ($zip->open($tempZip) === TRUE) {
$zip->extractTo($sqlDir);
$zip->close();
} else {
throw new Exception('Failed to extract the SQL ZIP file.');
}

$dsn = "mysql:host=$dbHost;dbname=$dbName";
$pdo = new PDO($dsn, $dbUser, $dbPass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 获取数据库所有表名
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
foreach ($tables as $table) {
// 如果数据表名以指定前缀开头,那么删除该数据表
if (strpos($table, "phome_") === 0) {
$pdo->query("DROP TABLE IF EXISTS $table");
}
}

// 导入 SQL 文件
$files = glob($sqlDir . '*.sql');
foreach ($files as $file) {
$pdo->exec(file_get_contents($file));
}

// 删除临时文件和 SQL 文件
unlink($tempZip);
$files = glob($sqlDir . '*.sql');
foreach ($files as $file) {
unlink($file);
}
rmdir($sqlDir);
}
function file_get($url){
// 初始化 cURL
$ch = curl_init();
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 设置 User-Agent 头信息
$user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36';
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
// 发送 HTTP 请求
$response = curl_exec($ch);
// 关闭 cURL
curl_close($ch);
// 处理响应结果
if ($response === false) {
return '请求失败';
}
return $response;
}

function match_regex($pattern, $subject) {
if (preg_match($pattern, $subject, $matches)) {
return $matches;
} else {
return false;
}
}

function removeChinese($str) {
return preg_replace('/[\x{4e00}-\x{9fa5}]/u', '', $str);
}

function clearAndImportSQL($dbHost, $dbName, $dbUser, $dbPass, $sqlFile) {
$dbCharset = "utf8mb4";
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=$dbCharset";

try {
$pdo = new PDO($dsn, $dbUser, $dbPass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 清空数据库表
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);

foreach ($tables as $table) {
$pdo->exec("TRUNCATE TABLE $table");
}

// 导入.sql文件
$sql = file_get_contents($sqlFile);

$pdo->exec($sql);

echo "数据库:".$dbName.",SQL文件:{$sqlFile},导入结果:SQL导入成功.<br>";
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}

$pdo = null;
}
/**
* 递归更改目录及其子目录和文件的权限
*
* @param string $path 要更改权限的目录路径
* @param int $filemode 文件权限(例如:0644)
* @param int $dirmode 目录权限(例如:0755)
*
* @return bool 成功则返回 true,否则返回 false
*/
function chmod_r($path, $filemode, $dirmode) {
if (is_dir($path) ) {
if (!chmod($path, $dirmode)) { // 更改目录的权限为 dirmode
return false;
}
$dh = opendir($path);
while (($file = readdir($dh)) !== false) {
if($file != '.' && $file != '..') {
$fullpath = $path.'/'.$file;
if(is_link($fullpath)) {
if (!chmod($fullpath, $filemode)) { // 更改符号链接文件的权限为 filemode
return false;
}
} elseif(!is_dir($fullpath)) {
if (!chmod($fullpath, $filemode)) { // 更改普通文件的权限为 filemode
return false;
}
} elseif(!chmod_r($fullpath, $filemode, $dirmode)) { // 递归更改子目录和文件的权限
return false;
}
}
}
closedir($dh);
} else {
if (!chmod($path, $filemode)) { // 更改目录下文件的权限为 filemode
return false;
}
}
return true; // 成功返回 true
}

// 读取数据库文件,然后传入需要替换的数组
function modifyDatabaseConfig($filename, $newConfig) {
// 读取配置文件内容
$file = file_get_contents($filename);
// 替换配置内容

// 配置文件里的变量名前缀
$prefix = '$ecms_config[\'db\']';

// 遍历新配置,将对应的变量替换为新值
foreach ($newConfig as $key => $value) {
$pattern = '/' . preg_quote($prefix) . '\[\'' . preg_quote($key) . '\'\]\s*=\s*\'[^;]+;/';
$replace = $prefix . '[\'' . $key . '\'] = \'' . $value . '\';';
$file = preg_replace($pattern, $replace, $file);
}
// 保存文件
file_put_contents($filename, $file);
}
function find_files($dir, $extension) {
$result = array();
// 打开目录并读取其中的文件
if (is_dir($dir)) {
$files = scandir($dir);
foreach($files as $file) {
if ($file != '.' && $file != '..') {
// 如果是目录,则递归查询子目录
if (is_dir($dir . '/' . $file)) {
$result = array_merge($result, find_files($dir . '/' . $file, $extension));
}
// 如果是文件且文件扩展名匹配,则将其添加到结果数组中
else if (preg_match("/$extension\$/i", $file)) {
$result[] = $dir . '/' . $file;
}
}
}
}
return $result;
}

移動セクション。php

 隐藏内容:会员可查看
<?php
require("./config.php");
$dbname2 = 'www_azhenxi_com';
$dbname = 'ecms_site';

// 使用 mysqli 执行 SQL 语句
$sql = "SELECT * FROM `{$dbname2}`.`liwuterms`";

$result = mysqli_query($conn, $sql);
$class = mysqli_fetch_all($result,MYSQLI_ASSOC);

turncate($dbname,'phome_enewsclass');
turncate($dbname,'phome_enewsclassadd');

foreach ( $class as $v){
$islast = 1;
$fearthclass = '';
$songclass = '';
$class_sql = "INSERT INTO `{$dbname}`.`phome_enewsclass` (`classid`, `bclassid`, `classname`, `sonclass`, `is_zt`, `lencord`, `link_num`, `newstempid`, `onclick`, `listtempid`, `featherclass`, `islast`, `classpath`, `classtype`, `newspath`, `filename`, `filetype`, `openpl`, `openadd`, `newline`, `hotline`, `goodline`, `classurl`, `groupid`, `myorder`, `filename_qz`, `hotplline`, `modid`, `checked`, `firstline`, `bname`, `islist`, `searchtempid`, `tid`, `tbname`, `maxnum`, `checkpl`, `down_num`, `online_num`, `listorder`, `reorder`, `intro`, `classimg`, `jstempid`, `addinfofen`, `listdt`, `showclass`, `showdt`, `checkqadd`, `qaddlist`, `qaddgroupid`, `qaddshowkey`, `adminqinfo`, `doctime`, `classpagekey`, `dtlisttempid`, `classtempid`, `nreclass`, `nreinfo`, `nrejs`, `nottobq`, `ipath`, `addreinfo`, `haddlist`, `sametitle`, `definfovoteid`, `wburl`, `qeditchecked`, `wapstyleid`, `repreinfo`, `pltempid`, `cgroupid`, `yhid`, `wfid`, `cgtoinfo`, `bdinfoid`, `repagenum`, `keycid`, `allinfos`, `infos`, `addtime`) VALUES ({$v['term_id']}, '0', '{$v['name']}', '{$songclass}', '0', '25', '10', '1', '0', '1', '{$fearthclass}', '{$islast}', 'category/{$v['slug']}', '.html', '', '0', '.html', '0', '1', '10', '10', '10', '', '0', '0', '', '10', '1', '1', '10', '{$v['name']}', '0', '0', '1', 'news', '0', '0', '2', '2', 'id DESC', 'newstime DESC', '', '', '1', '0', '0', '0', '0', '0', '0', '', '0', '0', '0', '', '1', '1', '0', '0', '0', '0', '', '1', '0', '0', '0', '', '0', '0', '0', '0', '', '0', '0', '0', '', '0', '0', '0', '0', '".time()."');";

// print_r($class_sql);die;
if(mysqli_query($conn, $class_sql)){
echo "{$dbname}栏目主表增加成功:{$v['name']}<br>";
}else{
echo "{$dbname}栏目主表增加失败:{$v['name']}<br>";
}
$class_sql = "INSERT INTO `{$dbname}`.`phome_enewsclassadd` (`classid`, `classtext`, `ttids`) VALUES ('{$v['term_id']}', ' ', '');";
// print_r($class_sql);die;
if(mysqli_query($conn, $class_sql)){
echo "{$dbname}栏目副表增加成功:{$v['name']}<br>";
}else{
echo "{$dbname}栏目副表增加失败:{$v['name']}<br>";
}
}

微信赞赏

WeChat

支付宝赞赏

Alipay

✍️ クリエイター: 紅穆

ウェブサイト管理者 · ご覧いただきありがとうございます!さらに多くの魅力的なコンテンツをお楽しみいただけますよう、引き続きご支援をお願いいたします。

著者プロフィール プロフィールを見る →

関連記事

WordPressでRedisのパスワードを変更した後、Redis Object Cacheプラグインが接続できない場合、どう対処すればよいですか?

WordPressでRedisのパスワードを変更した後、Redis Object Cacheプラグインが接続できない場合、どう対処すればよいですか? プログラムノート wordpress

問題の説明:当方はWordPressサイトのサーバーに「BaoTa Panel」を使用しており、PHP 8.0をインストールし、拡張機能パネルからRedisを導入し、WordPressに「Redis Object Cache」プラグインをインストールしています。通常は特別な設定を加えていなくても、そのまま起動すれば問題ありません。しかし、Redisにパスワードを設定しない場合、セキュリティ面で非常に脆弱であり、リスクのある脆弱性となります。そのため、パスワードを設定することを推奨します。…
👁 262
WordPressで修正履歴や草稿の自動保存を無効にするにはどうすればよいですか?

WordPressで修正履歴や草稿の自動保存を無効にするにはどうすればよいですか? プログラムノート wordpress

WordPressの「記事の変更履歴を自動保存」機能により、記事を編集するたびにバックエンドで変更履歴が記録され、各変更ごとに「posts」テーブルに1件のレコードが挿入されます。この機能により、記事のIDが次第に大きくなることがよくあります。この状態がWordPressの運用に大きな支障をきたすことはありませんが、記事のバージョン数が多すぎると、サーバーのストレージ容量やデータベース負荷が大幅に増加する可能性があります。
👁 379
EmpireCMSからWordPressへのブログデータ移行の詳細なチュートリアル

EmpireCMSからWordPressへのブログデータ移行の詳細なチュートリアル プログラムノート wordpress

PS1:第2回修正版。現在、カテゴリ、記事、タグのデータ転送がサポートされています。PS2:もし記事IDが常に一致しない場合は、WordPressの記事カテゴリデータテーブルや関係性テーブルをクリアしてみるのも一つの方法です。以前はTypechoを使用していたブログですが、後にEmpireに移行しました。しかし、Empireには機能が多すぎます。ブログとして使用する場合、これは「大材小用」と感じます。さらに、このブログでは、重要なコードを頻繁に記録しています。これらのコードはすべて、私自身が多大な労力と時間を使って作成したものです…
👁 556
WordPressにおける画像の変換によってページが処理停止する問題

WordPressにおける画像の変換によってページが処理停止する問題 プログラムノート wordpress

昨夜、画像をアップロードしていた際、理由は不明ですが、アップロードした画像が自動的に変換されました。変換方式:BASE64符号化。ウェブサイト上に掲載されている画像をサーバー上に保存し、そのリンクからアクセスすれば、画像が表示されます。しかし、別の方法として、画像を直接変換してから、変換後のCODEを直接アクセスする方法もあります。問題の説明:画像が非常に小さく、数KB程度の場合、「変換後、ウェブサイトに掲載する」という方法を採用することで、問題を回避できる可能性があります…
👁 158
WordPressデータベースクエリ操作

WordPressデータベースクエリ操作 プログラムノート wordpress

まず、データベースに接続するには、WordPressのデータベースに接続する必要があります。そのため、PHPファイル内に `wp-config.php` ファイルをインポートする必要があります。このファイルには、WordPressのインストールに必要なデータベース設定情報やその他の定数が含まれています。以下は、`wp-config.php` ファイルをインポートし、データベース接続を取得する方法を示す簡単な例です:// `wp-config.php` ファイルをインポートする:`require…`
👁 387
WordPress用MySQLデータベーステーブルおよびサブテーブル構造の機能説明

WordPress用MySQLデータベーステーブルおよびサブテーブル構造の機能説明 プログラムノート wordpress

WordPressはMySQLデータベースを採用しています。データテーブルの構造は一般的なデータベースと若干異なります。データの内容は、データテーブル形式で記録される場合もあれば、データメタ形式で記録される場合もあります。ただし、データメタ形式では直接確認することがやや困難です。開発者として成長するためには、WordPressのデータベースの基本構造を習得し、自らのプラグインやテーマにそれらを活用してデータの書き込みや読み取りを行う能力を身につける必要があります。一、データテーブル:WordPress以降…
👁 384

おすすめ読書

EmpireCMSウェブサイト用ロゴ画像の管理機能 – その後の画像アップロードや置換を容易にします(画像情報管理機能の使用およびPHPによる呼び出し)

EmpireCMSウェブサイト用ロゴ画像の管理機能 – その後の画像アップロードや置換を容易にします(画像情報管理機能の使用およびPHPによる呼び出し) プログラムノート EmpireCMS

Empireにおける画像管理を実現する場合、拡張変数を使用するのは不適切です。そのため、Empireの標準プラグイン「Image Information Management」を使用する方法があります。使用方法は上図の通りです(詳細は省略します)。以下に呼び出し方法を示します:<div class="logo fl w_img"> <?php $img=$empire->fetch1("SELECT * FROM…");
👁 391
(モバイル対応)レスポンシブ型PbootCMS・内装設計・装飾会社向けウェブサイトテンプレート|住宅内装・全室カスタマイズ向けウェブサイトソースコードのダウンロード|0254

(モバイル対応)レスポンシブ型PbootCMS・内装設計・装飾会社向けウェブサイトテンプレート|住宅内装・全室カスタマイズ向けウェブサイトソースコードのダウンロード|0254 実用収集 pbootcmsテンプレート

スマートフォン向けの適応型レスポンシブ不動産デザイン・施工会社用PbootCMSウェブサイトテンプレートです。モダンで高級感のあるデザインスタイルを採用しており、住宅リフォームや全家定制サービスを提供する企業の実績紹介やデザインコンセプトを効果的に表現できます。このテンプレートを活用することで、リフォーム会社がオンラインで住宅所有者を惹きつけ、ブランドの信頼性を高めることができます。テンプレート表示・設置手順:ウェブサイト管理画面:/admin.php|ユーザー名:admin|パスワード:admin|解凍パスワード:www.4s5.cn|関連記事…
👁 58
(適応型モバイル版)レスポンシブ設計の酒類・食品関連PBootCMSウェブサイトテンプレート – ワイン・黄酒関連ウェブサイトのソースコードダウンロード(0659)

(適応型モバイル版)レスポンシブ設計の酒類・食品関連PBootCMSウェブサイトテンプレート – ワイン・黄酒関連ウェブサイトのソースコードダウンロード(0659) 実用収集 pbootcmsテンプレート

ワインや黄酒などのブランド向けに最適化された、レスポンシブ対応の醸造・食品分野向けPbootCMS用ウェブサイトのテンプレートです。デザインはレトロで洗練されたスタイルを採用しており、酒類製品、醸造技術、企業文化を効果的に表現できます。醸造業界のブランドが公式ウェブサイトを作成し、ブランドのストーリーと文化を伝えるための優れた選択肢です。テンプレート表示|インストール手順|ウェブサイトの管理画面:/admin.php|ユーザー名:admin|パスワード:admin|展開用パスワード:www.4s…
👁 54
(PC+WAP)新エネルギー自動車用充電スタンド関連ウェブサイト用PBootCMSテンプレート – 自動車充電スタンドウェブサイトのソースコードダウンロード(2023年7月23日)

(PC+WAP)新エネルギー自動車用充電スタンド関連ウェブサイト用PBootCMSテンプレート – 自動車充電スタンドウェブサイトのソースコードダウンロード(2023年7月23日) 実用収集 pbootcmsテンプレート

新エネルギー自動車用充電スタンドおよび関連施設業界向けのPbootCMSウェブサイトテンプレートです。PCおよびモバイル端末に対応しています。テクノロジー感あふれるデザインスタイルにより、充電スタンド製品やスマート充電ソリューションを効果的に紹介できます。新エネルギー技術企業がブランド公式ウェブサイトを構築し、グリーンモビリティの理念を宣伝するための強力なツールです。テンプレート表示・インストール説明:ウェブサイトバックエンド:/admin.php、ユーザー名:admin、パスワード:admin、解凍用パスワード…
👁 63
(適応型スマートフォン向け)ブルー系大気化学フィルター材用石材メーカー向けPBootCMSテンプレート – 磨削材製造ウェブサイトのソースコードダウンロード(0754)

(適応型スマートフォン向け)ブルー系大気化学フィルター材用石材メーカー向けPBootCMSテンプレート – 磨削材製造ウェブサイトのソースコードダウンロード(0754) 実用収集 pbootcmsテンプレート

青色の高機能化学工業用濾材・研磨材用ウェブサイトテンプレート(PbootCMSベース)。PCおよびWAP両端末に対応。専門的で落ち着いたデザインスタイルを採用しており、化学工業用濾材・研磨材製品および産業応用シーンの紹介に最適です。化学材料関連企業が自社の生産能力をオンラインで紹介し、産業界の顧客を惹きつけるのに役立ちます。テンプレートの表示・インストール方法:ウェブサイトバックエンド:/admin.php、ユーザー名:admin、パスワード:admin、解凍用パスワード:www.4s5.c…
👁 46