Какой аргумент нужен моей функции для повторения результатов запроса get_results ()

#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 /…