ワードプレスのデータベースから一部のプラグインを無効化する方法
ワードプレスのデータベースから一部のプラグインを無効化する方法をワードプレスそのものの関数ではなくデータベースを直接いじって一覧を取得したり一部を無効化する方法を解説します。
ワードプレスのデータベースから一部のプラグインを無効化するには、そのデータの状態を知らなければいけないので、一覧の取得の仕方を説明したあと、その一覧のデータから一部のプラグインのデータを無効化します。
有効化されているプラグインの一覧を取得します。
有効化されているプラグインの一覧は、(テーブルプレフィックス)+’options’ のテーブル内、active_plugins の中にあります。
一覧は、シリアライズされているので、アンシリアライズしてから使います。
次のソースは、アクティブプラグインからデータを抜き出してプラグインパス+’/’+プラグイン名を配列に取り込みます。
上記プログラムの $rows は、以下のようにシリアライズされたデータが入っています。
phpmyadmin でも確認できます。
[“option_value”]=> [“option_id”]=> string(2) “33”
[“option_name”]=> string(14) “active_plugins”
[“option_value”]=> string(322) “a:6:{i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;i:1;s:33:”classic-editor/classic-editor.php”;i:2;s:35:”classic-widgets/classic-widgets.php”;i:3;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;i:4;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;i:5;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;}”
[“autoload”]=> string(3) “yes”
読みやすく展開するとこんな感じ
[“option_id”]=>”33″
[“option_name”]=>active_plugins”
[“option_value”]=>i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;
i:1;s:33:”classic-editor/classic-editor.php”;
i:2;s:35:”classic-widgets/classic-widgets.php”;
i:3;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;
i:4;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;
i:5;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;
[“autoload”]=>”yes”
アクティブプラグインの名前(パス付)は、option_value の中にあります。
例では6つのアクティブ(有効化された)になってるプラグインが入っています。
つまり、
[“option_value”]=>i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;
i:1;s:33:”classic-editor/classic-editor.php”;
i:2;s:35:”classic-widgets/classic-widgets.php”;
i:3;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;
i:4;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;
i:5;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;
から、無効化したいプラグイン名を取り除くことで無効化できます。
例えば、上記の classic-widgets を無効化するには、i=2 の行を削除して順番号を書き直して書き込めばいい。
i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;
i:1;s:33:”classic-editor/classic-editor.php”;
i:2;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;
i:3;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;
i:4;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;
アンシリアライズして配列にしておいて、ターゲットを検索し、配列から削除。
その後シリアライズしてテーブルに書き込むことでプラグインを無効化できます。
※シリアライズ:serialize(mixed $value): string
※案シリアライズ:unserialize(string $data, array $options = []): mixed
こんな感じで配列を作ってデータベースをアップデートすればいいということになります。
あとは、データベーステーブルからの読み出しと書き込みです。
プラグインは、有効化されているものだけをデータベースに記録しておいて、表示するとき wp-content/plugins の中を探してプラグインの一覧を作り、表示している最中に合致するプラグインを有効化されてますと表示してるんですね。
実際の使用は、active-plugins リストのプラグインの require_once で取り込むということですね。
この書き込みがあなたの一助になれば幸いです。
ワードプレスのデータベースから一部のプラグインを無効化するには、そのデータの状態を知らなければいけないので、一覧の取得の仕方を説明したあと、その一覧のデータから一部のプラグインのデータを無効化します。
ワードプレスのプラグインの一覧をデータベースから取得する方法
ワードプレスのデータベースからプラグインの一覧をしょくとくするには、有効化されているプラグインの一覧を取得します。
有効化されているプラグインの一覧は、(テーブルプレフィックス)+’options’ のテーブル内、active_plugins の中にあります。
一覧は、シリアライズされているので、アンシリアライズしてから使います。
次のソースは、アクティブプラグインからデータを抜き出してプラグインパス+’/’+プラグイン名を配列に取り込みます。
0001 global $table_prefix;
0002 global $wpdb;
0003 $db_name = DB_NAME; //データベース名の取得
0004 $db_user = DB_USER; //データベース接続ユーザーの取得
0005 $db_pass = DB_PASSWORD; //データベース接続用パスワードの取得
0006 $db_host = DB_HOST; //データベースホストの取得
0007 $db_pfix = $table_prefix; //データベースホストの取得
0008
0009 $link = mysqli_connect($db_host, $db_user, $db_pass,$db_name);
0010 if (!$link) {
0011 return('');
0012 }
0013 $stack = array();
0014 // データ処理
0015
0016 $sql = "SELECT ";
0017 $sql.= "* ";
0018 $sql.= "FROM ";
0019 $sql.= $db_pfix."options ";
0020 $sql.= "WHERE ";
0021 $sql.= "option_name = 'active_plugins'";
0022 $sql.= ";";
0023 if( $rows = mysqli_query($link, $sql) ){
0024 foreach($rows as $row){
0025 $value = maybe_unserialize( $row['option_value'] );
0026 foreach($value as $val){
0027 $stack[] = $val;
0028 }
0029 }
0030 }
0031 mysqli_close($link);
0032 return($stack);
上記プログラムの $rows は、以下のようにシリアライズされたデータが入っています。
phpmyadmin でも確認できます。
[“option_value”]=> [“option_id”]=> string(2) “33”
[“option_name”]=> string(14) “active_plugins”
[“option_value”]=> string(322) “a:6:{i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;i:1;s:33:”classic-editor/classic-editor.php”;i:2;s:35:”classic-widgets/classic-widgets.php”;i:3;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;i:4;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;i:5;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;}”
[“autoload”]=> string(3) “yes”
読みやすく展開するとこんな感じ
[“option_id”]=>”33″
[“option_name”]=>active_plugins”
[“option_value”]=>i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;
i:1;s:33:”classic-editor/classic-editor.php”;
i:2;s:35:”classic-widgets/classic-widgets.php”;
i:3;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;
i:4;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;
i:5;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;
[“autoload”]=>”yes”
アクティブプラグインの名前(パス付)は、option_value の中にあります。
例では6つのアクティブ(有効化された)になってるプラグインが入っています。
ワードプレスのデータベースから一部のプラグインを無効化する
ワードプレスのデータベースから一部のプラグインを無効化するには、前述の active-pulugins の option-value を書き換えることで実現できます。つまり、
[“option_value”]=>i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;
i:1;s:33:”classic-editor/classic-editor.php”;
i:2;s:35:”classic-widgets/classic-widgets.php”;
i:3;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;
i:4;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;
i:5;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;
から、無効化したいプラグイン名を取り除くことで無効化できます。
例えば、上記の classic-widgets を無効化するには、i=2 の行を削除して順番号を書き直して書き込めばいい。
i:0;s:57:”all-in-one-wp-migration-4g/all-in-one-wp-migration-4g.php”;
i:1;s:33:”classic-editor/classic-editor.php”;
i:2;s:41:”dashboardmemo_yuzu/dashboardmemo_yuzu.php”;
i:3;s:39:”wp_migration_yuzu/wp_migration_yuzu.php”;
i:4;s:39:”wp_uninstall_yuzu/wp_uninstall_yuzu.php”;
アンシリアライズして配列にしておいて、ターゲットを検索し、配列から削除。
その後シリアライズしてテーブルに書き込むことでプラグインを無効化できます。
※シリアライズ:serialize(mixed $value): string
※案シリアライズ:unserialize(string $data, array $options = []): mixed
こんな感じで配列を作ってデータベースをアップデートすればいいということになります。
0001 $stack= array();
0002 if( $rows = mysqli_query($link, $sql) ){
0003 foreach($rows as $row){
0004 $value = maybe_unserialize( $row['option_value'] );
0005 foreach($value as $val){
0006 if($target==$val ){
0007 }else{
0008 $stack[] = $val;
0009 }
0010 }
0011 }
0012 $value = serialize($stack);
0013 // データベースへ書きだす
0014 }
ワードプレスのデータベースから一部のプラグインを無効化する方法まとめ
プラグインの有効か無効化は、シリアライズ、シリアライズがわかれば概ね完了です。あとは、データベーステーブルからの読み出しと書き込みです。
プラグインは、有効化されているものだけをデータベースに記録しておいて、表示するとき wp-content/plugins の中を探してプラグインの一覧を作り、表示している最中に合致するプラグインを有効化されてますと表示してるんですね。
実際の使用は、active-plugins リストのプラグインの require_once で取り込むということですね。
この書き込みがあなたの一助になれば幸いです。