Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация user-rows.php - нужно заинклюдить файл плагина, куда лучше?
9ответ(ов) в теме
shepot
не в сети 4 года
На сайте с 18.06.2018
Участник
Тем 12
Сообщения 34
1
09:50
Версия WP-Recall: 16.18.20

Работаю со списком пользователей. Файл user-rows.php вызывается в каком-то в цикле. Можно прописать прямо в user-rows.php (и работает) require PLUGIN_URL . '/some_plugin_file.php';, а можно куда-то прописать require_once, чтобы подключался файл плагина один раз.

Собственно, вопрос: куда лучше прописать, чтобы подключение файла плагина не происходило несколько раз для каждого выводимого пользователя и после обновления плагина код не слетел?

0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
2
10:09

Здравствуйте.

Я честное слово не понял вопроса...
Подробней бы

0
shepot
не в сети 4 года
На сайте с 18.06.2018
Участник
Тем 12
Сообщения 34
3
10:45

Здравстсвуйте.

<form action="change_tarif" method="POST" id="change-tarif">
                Change tarif: 
                <select>
                <?php                
                    require STRIPE_PAYMENT . '/settings.php';        
                    foreach ($products as $key => $product) {
                        echo '<option value="' . $key . '">'. $product_name[$key] .'</option>';
                    }
                ?>
                </select>
                <input type="submit" value="Change" class="change-plan">
                <input type="submit" value="To free" class="convert-to-free">
</form>

Строка с require происходит каждый раз при вызове user-rows.php для каждого выводимого в списке пользователя. Хотелось бы, чтобы require происходил один раз до вызова user-rows.php.

0
Андрей CS
не в сети 2 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16914
4
11:05

ну подключите файл в хуке wp при инициализации нужной страницы, список пользователей ведь на одной странице выводится

0
shepot
не в сети 4 года
На сайте с 18.06.2018
Участник
Тем 12
Сообщения 34
5
10:34

Простите, что отвлекаю. Не нашел, как подключить php-файл через хук. Порыскал в интернете, потыкался сам в functions.php, своем плагине и на целевой странице.

Пробовал, например, так в page-dashboard.php ( на ней [wp-recall] ) подключить require_once STRIPE_PAYMENT . '/settings.php'; - не сработало, а вот догадаться, как через хук файл подключить не могу сообразить. Ну не просто же add_action, в который require вставить. Раз уж тема есть, может быть подскажете строчкой кода и где вписать?

Список пользователей шорткодом создается.

0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
6
10:52

делаете в своем php файле. На хуке wp, init и т.д.
Условные теги вордпресс почитайте is_page is_singular - и прочие. Проверяете id страницы где у вас список пользователей и в работу свою функцию дальше

0
Андрей CS
не в сети 2 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16914
7
14:06

например так

add_action('wp', 'require_my_file');
function require_my_file(){
   require_once 'file.php';
}

1
shepot
не в сети 4 года
На сайте с 18.06.2018
Участник
Тем 12
Сообщения 34
8
10:03

Спасибо.

Так пробовал - не работало и не работает (сейчас еще раз проверил). Думал, может что не так делаю, поэтому решил здесь спросить. Значит делал правильно.

После того, как код показали, подумал, что может быть хук 'wp' срабатывает слишком поздно или константу с URI плагина вордпресс не видит. Но, нет, однако не срабатывает, хотя var_dump показывает, что константа определяется.

Что ж, благодарю. Пока буду инклюдить прямо в user-rows.php

Если решу - отпишусь.

0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
9
10:13

Есть 2 хука:
do_action( 'rcl_include_template_before', $temp_name, $path );
и
do_action( 'rcl_include_template_after', $temp_name, $path );
до темплейта срабатывает, а второй после.

Попробуйте в нем что-то делать и распечатайте $temp_name, $path - по ним можно проверять что вы в нужном шаблоне и выполнять что либо

1
Вы не имеете права на публикацию сообщений в этой теме