_doing_it_wrong() WP 3.1.0

Відзначити щось, як “зроблено неправильно”. Наприклад, функція неправильна, параметр вказаний неправильно і т.д.

Повідомлення буде показано лише якщо увімкнено режим дебага – WP_DEBUG = true.

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

Функція працює на основі функції PHP trigger_error() .

Ця функція вважається внутрішньою для використання самим ядром . Не рекомендується використовувати цю функцію у своєму коді.

Повертає

null. Нічого.

Використання

_doing_it_wrong($function, $message, $version);
$function
(рядок) (обов’язковий)
Назва функції, у якій щось робиться неправильно.
$message
(рядок) (обов’язковий)
Повідомлення, яке пояснює, що було зроблено неправильно.
$version
(рядок) (обов’язковий)
Версія WordPress, з якою ця дія стала неправильною (застарілою).

Приклади

1

#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'
		);
	}
0

#2 Покажемо помилку, коли у функції немає глобальної змінної, з якою вона працює

У цьому прикладі для роботи функції is_archive() потрібна глобальна змінна $wp_query , це означає, що функцію потрібно викликати після того, як ця змінна визначена. Якщо вона викликається раніше, виведемо помилку про це.

function is_archive() {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags до роботи не працює, тому що керує. Before then, they always return false.' ), '3.1.0' );
		return false;
	}

	return $wp_query->is_archive();
}

список змін

З версії 3.1.0Введено.
З версії 5.4.0Ця функція не є довгим, як “приватний”.

Код _doing_it_wrong() WP 6.0.2

function _doing_it_wrong( $function, $message, $version ) {

	/**
	 * Fires when the given function is being used incorrectly.
	 *
	 * @ Since 3.1.0
	 *
	 * @param string $function Ця функція була названа.
	 * @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 $function, $message and $version parameters.
	 *
	 * @param bool $trigger Будь-який до trigger error для _doing_it_wrong() calls. Default true.
	 * @param string $function Ця функція була названа.
	 * @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. */
					__( 'Function %1$s був названий <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(
					'Function %1$s був названий <strong>incorrectly</strong>. %2$s %3$s',
					$function,
					$message,
					$version
				),
				E_USER_NOTICE
			);
		}
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *