Про $wpdb я знаю, прочитал достаточно много документации про нее, но у меня «какая-то» ошибка, проблема в том, что какой код не напишу (пробовал кучу разный запросов, и тех, что «тестовые»), то выводит пустоту, будто чисто пробел вставил и жду от него чудо :
[exec]
$number_of_users = $wpdb->get_var(
"SELECT COUNT(*) FROM $wpdb->users;"
);
echo "Всего на сайте зарегалось {$number_of_users} человек."
[/exec]
Любой запрос просто пустота
Модератор
Юрій
(@yube)
Обратите внимание на слово «глобальный». Без объявления global его внутри функций не видно.
[exec]
global $wpdb;
$number_of_users =$wpdb->get_var(
"SELECT COUNT(*) FROM $wpdb->users;"
);
echo "Всего на сайте зарегалось {$number_of_users} человек."
[/exec]
Всё равно пустота
Модератор
Юрій
(@yube)
Всё равно пустота
В шаблоне этот код работает, поэтому все вопросы к неведомому [exec]
у.
Читал, что если вставить этот код в тему
function exec_php($matches){
eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
return $inline_execute_output;
}
function inline_php($content){
$content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
$content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
return $content;
}
add_filter('the_content', 'inline_php', 0);
то страница начнет понимать php, а[exec]
вместо <?php используется. Так же я пробовал этот код в плагине PHP Code Snippets, без [exec]
, но всё равно пустота
-
Ответ изменён 6 лет, 6 месяцев назад пользователем
vipman.
-
Ответ изменён 6 лет, 6 месяцев назад пользователем
vipman.
-
Ответ изменён 6 лет, 6 месяцев назад пользователем
vipman.
-
Ответ изменён 6 лет, 6 месяцев назад пользователем
vipman.
-
Ответ изменён 6 лет, 6 месяцев назад пользователем
vipman.
Модератор
Юрій
(@yube)
если вставить этот код в тему
… можно сделать дыру в безопасности сайта.
Как и любым другим способом, позволяющим выполнить произвольный php-код из контента записи/страницы.
Код должен быть в обработчике шорткода, причем код, так сказать, стационарный, который написали Вы и точно знаете, что он делает. Например, так:
add_shortcode('users_registered', function() {
global $wpdb;
$number_of_users = $wpdb->get_var(
"SELECT COUNT(*) FROM $wpdb->users"
);
return "Всего на сайте зарегалось {$number_of_users} человек.";
});
И в контент страницы в нужном месте вставить [users_registered]
.
Хмм, извиняюсь, а где писать этот код, чтобы потом его вывести шортокодом? в index-e темы?
Модератор
Юрій
(@yube)
А куда, простите, Вы помещали код с ‘inline_php’?
Обычно рекомендуют такие сниппеты размещать в functions.php Темы (дочерней, разумеется). Но лучше оформить отдельным плагином. Такой плагин со кастомынми функциями (есть уже готовые плагины-заготовки) позволит менять Темы, не беспокоясь о том, что потеряется функционал.
А куда, простите, Вы помещали код с ‘inline_php’?
— в functions.php
Так, хорошо, в functions.php работает, но вопрос с кнопкой тогда как решить? я думал, что на html создать кнопку и к ней функционал добавить, но чтобы сделать так, чтобы при нажатии на кнопку выполнялось действие шорткода…?
Модератор
Юрій
(@yube)
Я вообще не понимаю, зачем тут шорткод. Сделайте нормальную аяксуню кнопку, как описано тут https://codex.wordpress.org/AJAX_in_Plugins (вторая часть, про фронт-энд).
Хотя, если кнопка должна/может быть в разных местах на разных страницах, то имеет смысл оформить html кнопки шорткодом. Заодно и проверку «показывать — не показывать» туда можно добавить.
Я вообще не понимаю, зачем тут шорткод
— если php код не работает на странице, а только в функционале темы, а чтобы вывести его действия нужен шорткод, то вот зачем…
Сделайте нормальную аяксуню кнопку, как описано тут https://codex.wordpress.org/AJAX_in_Plugins
не вижу здесь ничего про кнопки) делать целый плагин ради 1 кнопки, хмм
просто обычная кнопочка на html, которая выполняет update в «timestamp»
Модератор
Юрій
(@yube)
делать целый плагин ради 1 кнопки, хмм
Дело хозяйское. Удачи!
И да, code
— для кода, b-quote
— для цитирования.
И да, code — для кода, b-quote — для цитирования.
не вижу разницы в отображении)
Пока не особо разбираюсь в $wpbd, подскажите, что не правильно и можно ли так вообще?
global $wpdb;
$raice = $wpdb->update(
"SELECT COUNT(*) FROM $wpdb->participants_database $table wp_participants_database, $data date_recorded = ‘CURRENT_TIMESTAMP’, $where Наименование = $display_name"
);
});