プラグイン、テーマ、さらにはWordPressの中核を更新/アップグレードすると、データベースに影響があり、多くのことが変わります。どうやってそれを追跡するのですか?
問題は、リポジトリがあり、ファイルに加えられたすべての変更がすべて正しく追跡されることですが、データベースの変更(変更、挿入、更新、削除、作成)を格納するためのSQLファイルの作成方法がわかりません。など)。
私はFlywayというツールを使用しています。これは、リポジトリにあるSQLファイルのリストを選択し、各ファイルのクエリをデータベースに適用するため、すべての変更のSQLクエリを作成または取得する方法です。 WordPressの更新/アップグレードの未来によって作られた?このようにして、すべてのチームがレポから引き出すことができるようになり、行った変更が伝達されます。
ありがとう。
コア/プラグイン/テーマのアップグレード中にすべてのクエリを収集して、何が起こるかを確認できます。次の2つの手順に従ってください。
1)追加する必要があります。
define( 'SAVEQUERIES', TRUE );
wp-config.php
ファイルに追加して、ページロード中のすべてのクエリを$wpdb->queries
配列に収集します。あとで削除するのを忘れないでください。
2)それからsql.log
ファイルにそれをログインできます。これは簡単な例です:
/**
* Dump all database queries to the /wp-content/sql.log file.
*/
add_action( 'shutdown', function(){
$file = WP_CONTENT_DIR . '/sql.log'; // Edit this filepath to your needs.
if( current_user_can( 'manage_options' )
&& file_exists( $file )
&& is_writeable( $file )
&& isset( $GLOBALS['wpdb']->queries )
)
file_put_contents(
$file,
date( 'c' ) . PHP_EOL . print_r( $GLOBALS['wpdb']->queries, TRUE ),
FILE_APPEND
);
});
またはquery
クラスのwpdb
フィルタを使用して、INSERT
、UPDATE
、およびDELETE
クエリのみをログに記録します。
/**
* Log the INSERT, UPDATE, DELETE database queries to the /wp-content/sql.log file.
*/
add_filter( 'query', function( $query ){
if( FALSE !== stripos( $query, 'UPDATE ' )
|| FALSE !== stripos( $query, 'INSERT ' )
|| FALSE !== stripos( $query, 'DELETE ' )
) {
$file = WP_CONTENT_DIR . '/sql.log'; // Edit this filepath to your needs.
if( file_exists( $file ) && is_writeable( $file ) )
file_put_contents(
$file,
date( 'c' ) . ' - ' . $query . PHP_EOL,
FILE_APPEND | LOCK_EX
);
}
return $query;
}, PHP_INT_MAX );
コアアップグレードのためにこれらのファイルはあなたにとって興味があるかもしれません
ファイル/wp-admin/includes/upgrade.php
には、アップグレード関数、wp_upgrade()
関数を呼び出すupgrade_all()
があります。それはupgrade_xxx()
のような機能に関して各バージョンのためのデータベースアップグレードを含みます
例えば:
...truncated...
if ( $wp_current_db_version < 22422 )
upgrade_350();
if ( $wp_current_db_version < 25824 )
upgrade_370();
if ( $wp_current_db_version < 26148 )
upgrade_372();
if ( $wp_current_db_version < 26691 )
upgrade_380();
maybe_disable_link_manager();
maybe_disable_automattic_widgets();
update_option( 'db_version', $wp_db_version );
update_option( 'db_upgraded', true );
これが役に立つことを願っています。