WordPress: вставьте специальный экземпляр типа сообщения в качестве опции для пользовательской таксономии

Я пытаюсь подключить настраиваемый тип сообщения к таксономии, определенной в другом настраиваемом типе сообщений.

Я покажу вам пример. У меня есть пользовательский тип типа COURSE, я использую этот тип сообщения для создания класса для университета, поэтому в этом типе сообщений у меня будет какое-то пользовательское поле (учитель, график уроков ecc ecc) и таксономия, называемая Учителем.

Учитель – это другой пользовательский тип, который я использую для представления учителей, работающих в моем университете.

Теперь я хотел бы создать связь между экземпляром Учителя и Курсом, поэтому пока я создаю новый курс, у меня будет список ВСЕХ учителей в университете, и я могу выбрать один (или более) из этого списка.

Как я могу это сделать, должен ли я определить этот список учителей, пока я регистрирую Учителя таксономии? Можете ли вы дать мне фрагмент кода, чтобы создать такую ​​ассоциацию?

ВАЖНО : я ищу ответ кода, мне не нужен плагин, я хочу узнать, как создать код для этого.

Заранее спасибо.

Хорошо, поэтому я чувствую себя великодушным и добавлю еще один ответ 🙂

Этот код будет запускаться каждый раз, когда пост будет создан или обновлен , и он добавит term к вашей таксономии вашего teacher с именем, которое совпадает с названием должности.

 add_action('save_post', 'my_create_teacher_term_from_post'); function my_project_updated_send_email($post_id){ /** Ensure that this is not a revision */ if(wp_is_post_revision($post_id)) return; /** Get the name of the teacher that has been added/updated */ $post_title = get_the_title(post_id); /** Check to see if a term with the same name as the teacher exists... */ if(!term_exists($post_title, 'teacher')) : // It does not... /** Insert the new term */ wp_insert_term($post_title, 'teacher'); endif; } 

Примечание. Если вы хотите, чтобы это действие произошло, когда сообщение создано, не обновляется, замените save_post на wp_insert_post .


Дополнительное чтение

  • Подходы к действию WordPress – http://codex.wordpress.org/Plugin_API/Action_Reference

    Это будет важно для вас в будущем, и я полностью рекомендую вам пробиться через ядро, чтобы увидеть, какие крючки доступны – просто будьте осторожны!

  • save_posthttp://codex.wordpress.org/Plugin_API/Action_Reference/save_post

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

  • wp_insert_post действия wp_insert_posthttp://codex.wordpress.org/Plugin_API/Action_Reference/wp_insert_post

    Вы можете использовать этот крючок, если хотите, он вызывается только тогда, когда сообщение обновляется, хотя и не создано. И если вам когда-либо понадобится использовать этот крючок и крюк save_post , обратите внимание, что этот вызов save_post после save_post .

  • Функция term_existshttp://codex.wordpress.org/Function_Reference/term_exists

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

  • Функция wp_insert_termhttp://codex.wordpress.org/Function_Reference/wp_insert_term

    Наконец, это то, как вы произвольно создаете термин прогаматически.

Я бы посоветовал вам взглянуть на плагин Posts 2 Posts .

Этот плагин позволяет создать связь между сообщениями любого типа. Например –

 p2p_register_connection_type(array( 'name' => 'courses_to_teachers', 'from' => 'course', 'to' => 'teacher' )); 

При редактировании сообщения любого типа у вас будет дополнительный блок – https://wordpress.org/plugins/posts-to-posts/screenshots/

Поэтому, если вы добавляете / редактируете курс, вы можете связать его с несколькими учителями или наоборот

Я использовал это в прошлом, и хотя это может быть немного сложно начать, есть очень хорошая поддержка, и я, как выяснил автор, очень хорошо ответил на вопросы, размещенные на форуме поддержки WP.

Автор, Scribu, имеет свой собственный сайт, связанный с плагином, полным примеров и описаний – http://scribu.net/wordpress/posts-to-posts/

Кроме того, на форумах WP есть много поддержки – https://wordpress.org/support/plugin/posts-to-posts