#php #mysql #wordpress
#php #mysql #wordpress
Вопрос:
Это мой запрос к базе данных WordPress:
global $wpdb;
$table_name = $wpdb->prefix . 'qs_css';
$db_css = $wpdb->get_results(
"
SELECT qs_the_css
FROM $table_name
WHERE qs_css_id = 1
"
);
echo $db_css[0]->qs_the_css; // WORKS JUST FINE
Однако мне нужны результаты запроса внутри моей функции:
add_action( 'wp_head', 'quick_qs_db_css', 100 );
function quick_qs_db_css( ) { ?>
<style type="text/css" id="db-css">
<?php echo $db_css[0]->qs_the_css; // OUTPUTS NILL ! ?>
</style>
<?php }
Какие аргументы нужны quick_qs_db_css()
функции ? Можно ли передать результаты запроса в функцию?
Я бы предпочел не включать запрос внутри quick_qs_db_css()
функции.
Обновить:
add_action( 'wp_head', 'quick_qs_db_css', 100 );
function quick_qs_db_css( $db_css ) { ?>
<?php var_dump( $db_css[0]->qs_the_css); // ALSO RETURNS NULL ?>
<?php }
Любой вклад был бы очень оценен ! Заранее благодарю 🙂
Ответ №1:
Во-первых, внутри функции $ db_css имеет локальную видимость, а переменная не видна внутри функции. Итак, вы должны передать переменную $db_css в качестве аргумента.
Комментарии:
1. Спасибо, Игорь, я передал $ db_css в качестве аргумента, но все равно получаю null…
2. как вы вызываете функцию? Вы только что изменили сигнатуру функции. Я думаю, вам следует использовать add_action( ‘wp_head’, ‘quick_qs_db_css’, 100, 1); и каким-то образом вы можете передавать аргументы функциям quick_qs_db_css, но я не знаю как. Пожалуйста, посмотрите на developer.wordpress.org/reference/functions/add_action . Вы должны вызвать функцию с параметрами.
3. Вы также можете поместить свой код запроса в отдельную функцию function GetResults() { $имя_таблицы = $wpdb->prefix . ‘qs_css’; $db_css = $wpdb->get_results( «ВЫБЕРИТЕ qs_the_css ИЗ $имя_таблицы, ГДЕ qs_css_id = 1 «); верните $ db_css; } А затем вызовите функцию внутри quick_qs_db_css следующим образом: $db_css = GetResults(); Или вы можете поместить код с получением данных из базы данных в свою функцию.
4. @IgorChemin , Большое тебе спасибо! Это отлично работает с возвратом. Цените это !
5. Как я обнаружил в документах WordPress, вы не можете передать свои собственные параметры с помощью add_action предопределенного действия wordpress, вам следует посмотреть, какие параметры вы можете передать внутри соответствующего do_action (‘wp_head’). Итак, в этом случае вы должны поместить логику получения данных из базы данных в свою функцию и вызвать как другую функцию, но вы не можете передать свои пользовательские параметры developer.wordpress.org/reference/functions/add_action /…