WordPress3.3から3.4にかけて大量の非推奨関数が発生しましたが、表示に直接影響を与える関数が多く、旧バージョンとの互換性を維持するために、テーマなどでは、あえて非推奨関数を含んで使っている状況にあります。
debug.logには、必ず非推奨関数のエラーが記述されるので、実際のエラーを特定する妨げになる事もあると思います。
以下のコードを記述する事で、debug.logへワードプレスの非推奨関数のエラーを書き出さなくする事が出来ます。
Add themes/functions.php
add_filter( 'deprecated_function_trigger_error', '__return_false' ); add_filter( 'deprecated_file_trigger_error', '__return_false' );
仕組み
wp-includes/functions.php
/** * Marks a function as deprecated and informs when it has been used. * * There is a hook deprecated_function_run that will be called that can be used * to get the backtrace up to what file and function called the deprecated * function. * * The current behavior is to trigger a user error if WP_DEBUG is true. * * This function is to be used in every function that is deprecated. * * @package WordPress * @subpackage Debug * @since 2.5.0 * @access private * * @uses do_action() Calls 'deprecated_function_run' and passes the function name, what to use instead, * and the version the function was deprecated in. * @uses apply_filters() Calls 'deprecated_function_trigger_error' and expects boolean value of true to do * trigger or false to not trigger error. * * @param string $function The function that was called * @param string $version The version of WordPress that deprecated the function * @param string $replacement Optional. The function that should have been called */ function _deprecated_function( $function, $version, $replacement= null ) { do_action( 'deprecated_function_run', $function, $replacement, $version ); // Allow plugin to filter the output error trigger if ( WP_DEBUG && apply_filters( 'deprecated_function_trigger_error', true ) ) { if ( ! is_null($replacement) ) trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $function, $version, $replacement ) ); else trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $function, $version ) ); } }
/** * Marks a file as deprecated and informs when it has been used. * * There is a hook deprecated_file_included that will be called that can be used * to get the backtrace up to what file and function included the deprecated * file. * * The current behavior is to trigger a user error if WP_DEBUG is true. * * This function is to be used in every file that is deprecated. * * @package WordPress * @subpackage Debug * @since 2.5.0 * @access private * * @uses do_action() Calls 'deprecated_file_included' and passes the file name, what to use instead, * the version in which the file was deprecated, and any message regarding the change. * @uses apply_filters() Calls 'deprecated_file_trigger_error' and expects boolean value of true to do * trigger or false to not trigger error. * * @param string $file The file that was included * @param string $version The version of WordPress that deprecated the file * @param string $replacement Optional. The file that should have been included based on ABSPATH * @param string $message Optional. A message regarding the change */ function _deprecated_file( $file, $version, $replacement= null, $message= '' ) { do_action( 'deprecated_file_included', $file, $replacement, $version, $message ); // Allow plugin to filter the output error trigger if ( WP_DEBUG && apply_filters( 'deprecated_file_trigger_error', true ) ) { $message= empty( $message ) ? '' : ' ' . $message; if ( ! is_null( $replacement ) ) trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $file, $version, $replacement ) . $message ); else trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $file, $version ) . $message ); } }
To prevent the notices from displaying for functions, the ‘deprecated_function_trigger_error’ filter hook should return false. To prevent notices from displaying for files, the ‘deprecated_file_trigger_error’ filter hook should return false.