Это pluggable функция

101
09 февраля 2021, 21:50

Мне нужно использовать функцию check_ajax_referer() в плагине для проверки переданного значения, но в описании пишется:

Это pluggable функция — т.е. её можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.

Значит этот хук add_action('wp_ajax_(action)', 'my_action_callback'); нужно вызывать из plugins_loaded ?

Answer 1

Нет, не так.

add_action('wp_ajax_action', 'my_action_callback')

ставят прямо в тело плагина. Если у плагина один файл, то в него.

Есть описание последовательности вызова хуков. Из неё видно, что сначала сработает plugins_loaded, потом init, и только потом уж будут вызваны хуки ajax (они не указаны в статье по ссылке, но вызываются они после полной загрузки ядра).

Возможно, у вас есть стандартное непонимание. На самом деле, add_action() не делает ничего, она только заносит информацию во внутреннюю таблицу хуков WordPress. Ваша функция my_action_callback будет вызвана, как я описал выше, после полной загрузки ядра.

Так что вставляйте указанный выше add_action прямо в тело плагина. А check_ajax_referer() должен быть внутри вашей my_action_callback.

Код вашего плагина должен выглядеть примерно так:

<?php
/**
 * Plugin Name: My Cool Plugin
 * Plugin URI: https://cool.org/
 * Description: Coolest plugin.
 * Version: 1.0
 * Author: Me
 * Author URI: https://cool.org/
 * Text Domain: cool
 * Domain Path: /languages/
 *
 * @package cool
 */
function my_action_callback() {
    check_ajax_referer( 'cool_action' );
    // Some code...
}
add_action( 'wp_ajax_cool_action', 'my_action_callback' );
READ ALSO
Проклятье массива на php

Проклятье массива на php

Помогите новичку не могу понять как записать в массив в цикле значение, записываю таким вот образом

140
BitConverter.ToUInt32 в php?

BitConverter.ToUInt32 в php?

Есть в c# метод BitConverterToUInt32

93