chuck
  • 0
Новичок

Фильтрация пользовательских сообщений с помощью автоматически заполняемых раскрывающихся списков

  • 0

Я создал пользовательский тип сообщений с именем agent.

У меня есть страница со списком всех агентов.

Когда я добавляю агента, у меня есть целый ряд настраиваемых мета-полей, которые можно заполнить, регион, специальность, язык…

Я хотел бы добавить ряд раскрывающихся списков в интерфейсе, которые будут заполняться всеми терминами из каждой пользовательской мета. Например, в раскрывающемся списке регионов будут указаны все регионы всех агентов. Если я добавлю нового агента в новый регион, Dropbox автоматически подберет его.

Спасибо, что посмотрели.

Share
  1. Если вы попытаетесь сделать это, вы получите запрос, возможно, довольно большой загрузки данных, чего следует избегать.

    Лучше всего было бы предварительно собрать данные в некоторых global (array) $prefix_meta_box_values и использовать их позже для внешнего вывода.

    Вы также можете заполнить некоторый массив на save_post крючке. Просто возьмите значения get_post_meta( $post_id, 'key', 'value' ) внутри функции на экране редактирования сообщения в пользовательском интерфейсе администратора и добавьте их в какое-либо поле базы данных с помощью update_option('agents_data') . Это позволит вам вызывать внешний get_option('agents_data'); интерфейс и заполнять поля выбора.

    Обновлять:

    // The updata agents option could look like this, asuming that you already added 
    // some data with an add_option call somewhere. Else you could just grap the old
    // data, merge it with the new and update the post meta field.
    // This was fastly written out of my head, so don't expect it to work without any fixing.
    function my_agents_data() 
    {
      $new_agents_data = get_post_meta( $GLOBALS[$post]->ID, 'key', 'value' );
      $old_agents_data = get_option( 'agents_data' );
      $resulting_agents_data = array_merge( $old_agents_data, $new_agents_data );
      update_option( 'agents_data', $resulting_agents_data );
    }
    add_action( 'save_post', 'my_agents_data' );
    

    Это позволит вам получить данные get_option('agents_data') опций из поля опций в таблице опций wp. Дело в том, что вам следует избегать попадания метаданных в метатаблицу сообщений.

    • 0

Оставить ответ

You must login to add an answer.