Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация user-rows.php - нужно заинклюдить файл плагина, куда лучше?
9 ответ(ов) в теме
Statusnick
не в сети 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)
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 17447
2
10:09

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

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

0
Statusnick
не в сети 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
не в сети 47 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 14756
4
11:05

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

0
Statusnick
не в сети 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)
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 17447
6
10:52

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

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

например так

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

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

Спасибо.

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

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

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

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

0
Владимир (Otshelnik-Fm)
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 17447
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
Вы не имеете права на публикацию сообщений в этой теме