Как использовать get_query_vars () внутри add_filter () в Wordpress? - PullRequest
0 голосов
/ 15 октября 2018

Я несколько дней чесал голову, но не могу понять порядок действий WordPress между add_filters и get_query_vars.

Контекст:

  • Я хочу отправить запрос WP_queryсоответствующие значения для поля выбора HTML.
  • Я передаю параметр в URL, чтобы узнать, как мне нужно фильтровать
  • Сначала я объявляю свои переменные в WP (functions.php):

   function add_query_vars_filter( $vars ){
   $vars[] = "page_id_po";
   return $vars;
  }
  add_filter( 'query_vars', 'add_query_vars_filter', 5);
  • Когда я добавляю второй фильтр и пытаюсь получить переменную URL, в результате я всегда получаю нулевое значение (позже в functions.php).

function my_post_object_query( $args, $field, $post_id ) {

$page_id = get_query_var('page_id_po'); // Returns no value

$report_related_company_obj = get_field('field_5ba4c9d0c8168', $page_id);
$page_id = $report_related_company_obj->ID;

$args = array(
  'post_type'  => 'tableau_viz',
  'post_status' => 'publish',
  'meta_query' => array(
  array(
      'key' => 'company',
      'value' => $page_id,
    ),
  ),
);
return $args;
}
add_filter('acf/fields/post_object/query/key=field_5bba22da1d8b5', 
'my_post_object_query', 11);

Проблема не связана с тем, что переменная не найдена в URL, потому что, если я вызываю функцию 'my_post_object_query' прямо в моем custom-template.php, как это:

$company_id = my_post_object_query();
var_dump($company_id);

Я получаю правильные аргументы, и get_query_var дает мне правильный результат (упрощенный вывод):

array(3) { [...] "company" ["value"]=> int(771) } } } ;

Кажется, проблема в том, что get_query_var вызывается только после моего filer / запроса.Я попытался добавить свой фильтр на более позднем этапе, например так:

add_action('wp_loaded', 
 add_action_adr('acf/fields/post_object/query/key=field_5bba22da1d8b5', 
'my_post_object_query',10,3));

function add_action_adr($tag, $function_to_add, $priority = 10, 
$accepted_args = 1) {
return add_filter('acf/fields/post_object/query/key=field_5bba22da1d8b5', 
'my_post_object_query',10,3);
}

Однако это add_action на более позднем этапе также не работает.Спасибо за вашу помощь.

...