_doing_it_wrong() WP 3.1.0

Click here to view original web page at wp-kama.ru

Отметить что-либо, как "сделано неправильно". Например, функция вызвана неправильно, параметр указан неправильно и т.д.

Сообщение будет показано только если включен режим дебага - WP_DEBUG = true.

Функция вызывает хук doing_it_wrong_run, который можно использовать в своих целях для обработки ошибки. Например этот хук пригодится для рабочего сайта где отключен режим дебага, но мы хотим ловить ошибки "сделано неправильно". Для этого, вешаем на этот хук свою функцию и обрабатываем полученные ошибки, например, сохраняем их в файл или отправляем себе email об ошибке.

Эта функция считается внутренней для использования самим ядром. Не рекомендуется использовать эту функцию в своем коде.

Возвращает

null. Ничего.

Использование

_doing_it_wrong( $function, $message, $version );
$function(строка) (обязательный)
Название функции в которой что-либо делается неправильно.
$message(строка) (обязательный)
Сообщение, объясняющее, что было сделано неправильно.
$version(строка) (обязательный)
Версия WordPress, с которой это действие стало неправильным (устарелым).

Примеры

#1 Покажем ошибку, когда функция вызвана не на том хуке.

Этот пример из ядра ВП. В нем пользователю сообщается что он вызвал функцию регистрации REST маршрута не на хуке rest_api_init, как это должно быть сделано. См. код register_rest_route().

    if ( ! did_action( 'rest_api_init' ) ) {
		_doing_it_wrong(
			'register_rest_route',
			sprintf(
				/* translators: %s: rest_api_init */
				__( 'REST API routes must be registered on the %s action.' ),
				'<code>rest_api_init</code>'
			),
			'5.1.0'
		);
	}

#2 Покажем ошибку, когда в функции нет глобальной переменной с которой она работает

В этом примере для работы функции is_archive() нужна глобальная переменная $wp_query, это значит что функцию нужно вызывать после того как эта переменная определена. Если она вызывается раньше, выведем ошибку об этом.

function is_archive() {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
		return false;
	}

	return $wp_query->is_archive();
}

Список изменений

С версии 3.1.0Введена.
С версии 5.4.0This function is no longer marked as "private".
function _doing_it_wrong( $function, $message, $version ) {

	/**
	 * Fires when the given function is being used incorrectly.
	 *
	 * @since 3.1.0
	 *
	 * @param string $function The function that was called.
	 * @param string $message  A message explaining what has been done incorrectly.
	 * @param string $version  The version of WordPress where the message was added.
	 */
	do_action( 'doing_it_wrong_run', $function, $message, $version );

	/**
	 * Filters whether to trigger an error for _doing_it_wrong() calls.
	 *
	 * @since 3.1.0
	 * @since 5.1.0 Added the $function, $message and $version parameters.
	 *
	 * @param bool   $trigger  Whether to trigger the error for _doing_it_wrong() calls. Default true.
	 * @param string $function The function that was called.
	 * @param string $message  A message explaining what has been done incorrectly.
	 * @param string $version  The version of WordPress where the message was added.
	 */
	if ( WP_DEBUG && apply_filters( 'doing_it_wrong_trigger_error', true, $function, $message, $version ) ) {
		if ( function_exists( '__' ) ) {
			if ( $version ) {
				/* translators: %s: Version number. */
				$version = sprintf( __( '(This message was added in version %s.)' ), $version );
			}

			$message .= ' ' . sprintf(
				/* translators: %s: Documentation URL. */
				__( 'Please see <a href="%s">Debugging in WordPress</a> for more information.' ),
				__( 'https://wordpress.org/support/article/debugging-in-wordpress/' )
			);

			trigger_error(
				sprintf(
					/* translators: Developer debugging message. 1: PHP function name, 2: Explanatory message, 3: WordPress version number. */
					__( '%1$s was called <strong>incorrectly</strong>. %2$s %3$s' ),
					$function,
					$message,
					$version
				),
				E_USER_NOTICE
			);
		} else {
			if ( $version ) {
				$version = sprintf( '(This message was added in version %s.)', $version );
			}

			$message .= sprintf(
				' Please see <a href="%s">Debugging in WordPress</a> for more information.',
				'https://wordpress.org/support/article/debugging-in-wordpress/'
			);

			trigger_error(
				sprintf(
					'%1$s was called <strong>incorrectly</strong>. %2$s %3$s',
					$function,
					$message,
					$version
				),
				E_USER_NOTICE
			);
		}
	}
}

Cвязанные функции

Еще из раздела: Без рубрики