Как передать переменную PHP в функцию

Я изменяю свой цикл Wordpress, чтобы он отображал только сообщения, которые были опубликованы после регистрации текущего вошедшего в систему пользователя. Чтобы получить дату регистрации пользователя, я успешно использую следующее:

<?php $regdate = date("Y-d-m", strtotime(get_userdata(get_current_user_id( ))->user_registered)); ?>

Чтобы изменить цикл, я успешно использую следующее:

    <?php
      function filter_where($where = '') {
      $where .= " AND post_date >= '2010-02-18'";
      return $where;
      }
      add_filter('posts_where', 'filter_where');
      query_posts($query_string);
    ?>

Мне нужна помощь, это передать переменную $regdate вместо текстовой даты «2010-02-18». Я пробовал несколько вариантов, но он ломается. Я уверен, что это довольно просто для любого, кто разбирается в PHP... пожалуйста, помогите!


person Scott Eldo    schedule 18.03.2016    source источник
comment
Вы пробовали использовать ключевое слово global для своей переменной?   -  person Cihan Uygun    schedule 19.03.2016
comment
Измените функцию на function filter_where($where, $my_date) { и вызовите ее с функцией filter_where('', $regdate) { с этим вместо текста $where .= " AND post_date >= $my_date";   -  person Steve    schedule 19.03.2016
comment
Извините, Стив, я немного смущен вашим ответом, не могли бы вы привести пример?   -  person Scott Eldo    schedule 22.03.2016


Ответы (1)


Насколько я знаю, это можно сделать двумя разными способами: $GLOBALS и передачей аргументов функции.

$ГЛОБАЛЬНЫЕ

Ассоциативный массив, содержащий ссылки на все переменные, которые в настоящее время определены в глобальной области действия скрипта. Имена переменных являются ключами массива.

function boo(){
    echo $GLOBALS['foo'];
}
$foo = 'bar';
boo(); // output: bar

Ссылка: http://php.net/manual/en/reserved.variables.globals.php

Аргументы функции

Информация может передаваться функциям через список аргументов, который представляет собой список выражений, разделенных запятыми. Аргументы оцениваются слева направо.

function boo($foo){
    echo $foo;
}
boo('bar'); // output: bar

Ссылка: http://php.net/manual/en/functions.arguments.php

person Fin    schedule 18.03.2016
comment
Просто к вашему сведению: мне сказали, что ваше второе решение лучше, чем первое. Использование «пользовательских» глобальных переменных не рекомендуется. - person DigiLive; 19.03.2016
comment
И почему это обескураживает? @дн Фер - person Fin; 19.03.2016
comment
См. stackoverflow.com/questions/1557787/ Чтобы было ясно... Я не говорю, что их использовать неправильно, я говорю, что вы, возможно, захотите этого избежать. - person DigiLive; 19.03.2016
comment
Я немного запутался, можете ли вы привести пример того, как я буду использовать это в своем коде, пожалуйста? - person Scott Eldo; 22.03.2016
comment
Примеры есть в моем ответе, скопируйте код и посмотрите сами. - person Fin; 22.03.2016