получить пользовательские данные типа записи, используя значение настраиваемого поля в WordPress - PullRequest
0 голосов
/ 11 декабря 2018

Могу ли я получить данные, используя значение произвольного поля?Мой post_type - brand-name, а имя поля - generic-name.Так как я могу получить все данные, используя generic-name?

Вот код:

$title = get_the_title(); 
$the_query = new WP_Query( array(
          'posts_per_page'=>9,
          'post_type'=>'brand-name',
          'order'   => 'ASC',
          'meta_query' => array(
           array(
                'key' => 'generic-name',// this key is advance custom field: type post_object
                'value' => $title,
                'type'  => 'char' // type not working
           ), 
        ), 
        'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
      );`

Этот код не работал.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Ваше поле AFC является объектом записи, что означает, что мета-значение является либо отдельным идентификатором записи, либо сериализованным массивом идентификаторов записей.

Если в вашем настраиваемом поле разрешен только один выбор,тогда это будет один идентификатор, и его можно запросить так:

$post_id = get_the_ID(); 
$the_query = new WP_Query( array(
      'posts_per_page'=>9,
      'post_type'=>'brand-name',
      'order'   => 'ASC',
      'meta_query' => array(
       array(
            'key' => 'generic-name',// this key is advance custom field: type post_object
            'value' => $post_id,
       ), 
    ), 
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
  );`

Если ваше настраиваемое поле допускает множественный выбор, то это будет сериализованный массив идентификаторов php.Поскольку mysql не умеет читать сериализованные данные php, лучше всего использовать запрос LIKE:

$post_id = get_the_ID(); 
$the_query = new WP_Query( array(
      'posts_per_page'=>9,
      'post_type'=>'brand-name',
      'order'   => 'ASC',
      'meta_query' => array(
       array(
            'key' => 'generic-name',// this key is advance custom field: type post_object
            'value' => sprintf("\"%s\"", $post_id),
            'compare' => 'LIKE'
       ), 
    ), 
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
  );`
0 голосов
/ 11 декабря 2018

Я думаю, что это может вам помочь.Пожалуйста, посмотрите на это.

Могу ли я получить данные, используя значение произвольного поля?- Да, вы можете получить данные, используя значение настраиваемого поля.

Сначала мы можем получить значение настраиваемого поля, используя приведенный ниже код.

 <?php $custom_field_value= get_post_meta( get_the_ID(), 'generic-name', true ); ?>

Этот $ custom_field_value возвращает значениеполя 'generic-name'.

Используя это значение, мы можем сформировать WP_Query.

$the_query = new WP_Query( array(
      'posts_per_page'=>9,
      'post_type'=>'brand-name',
      'order'   => 'ASC',
      'meta_query' => array(
       array(
            'key' => 'generic-name',
            'value' => $custom_field_value
       ), 
    ), 
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
  );

Спасибо.

...