Intereting Posts
Пользовательский запрос – на основе ввода пользователем Использование настраиваемого поля в качестве значения «orderby», вызывающего группировку публикаций по дате публикации Как использовать таксономический термин как значение get_template_part? удалить название темы с панели инструментов .. Как? Не удается упорядочить результат запроса как заданный массив идентификаторов сообщений Добавление двух подменю в меню Убедитесь, что пользователь WordPress зарегистрирован в другом приложении, так как wordpress 4.0 Визуальный редактор не показывает разные заголовки Как использовать current_post для открытия нового неупорядоченного списка каждые пять сообщений Как узнать, есть ли все должности только в одной категории? Устойчивость базы данных пользовательских сообщений. Почему нет? BuddyPress: Какая польза от таблицы wp_bp_xprofile_data и как она обновляется? Удалить ссылку категории Как ограничить длину предыдущих / следующих сообщений в моей теме WordPress? Форматы сообщений в контексте функции «Сохранить сообщение» базы данных

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

Пользовательский тип сообщения «Компания» имеет:

Пользовательский тип сообщения «Ресторан» имеет:

  • Название поля ресторана

  • Поле описания ресторана

Как я могу сделать так, чтобы всякий раз, когда я добавляю новую компанию (заполняются поля ресторана), она автоматически добавит новый ресторан, чьи поля / данные совпадают с недавно добавленной компанией?

Моя идея:

  • Когда я создаю новую компанию, я добавлю данные ресторана в таблицу «рестораны» в базе данных

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

Возможно ли это? Если нет, или если у вас есть другая идея решить проблему, пожалуйста, поделитесь ею.

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

Предоставление примера было бы очень полезно. Благодаря!

Solutions Collecting From Web of "Учитывая два пользовательских типа сообщений: автоматически добавлять метаполя из одного настраиваемого типа сообщения в другой"

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

Когда рестораны уже являются CPT, они сохраняются в таблице сообщений и с информацией, которую вы разделяете, это кажется достаточно.

Автосоздайте пост ресторана, когда создается сообщение Компании, и поле названия ресторана заполнено, очень легко без какого-либо плагина.

Если вы введете название / описание ресторана с помощью метабокса, возможно, вы save_post чтобы сохранить эти поля в ресторане, вы можете использовать одну и ту же функцию, чтобы сохранить сообщение в ресторане, используя wp_insert_post : используя название ресторана в качестве названия, описание ресторана в качестве контента и настройки post_author к тому же post_author сообщения компании. В столбе ресторана вы можете сохранить настраиваемое поле, что-то вроде '_company_ID' и установить его на идентификатор компании, это будет очень полезно, когда вам нужно будет восстановить ресторан, связанный с конкретной компанией, кроме того, это поможет вам избегать дубликатов.

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

Предположим, у вас есть функция 'save_post' чтобы сохранить мета-поля ресторана из метабокса:

 add_action('save_post', 'save_restaurant_fields'); function save_restaurant_fields( $postid ) { /* If this is an autosave, do not do anything */ if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; /* Check if our nonce is set (of course you have to set a nonce in the metabox) see wp_nonce_field in codex //codex.wordpress.org/Function_Reference/wp_nonce_field */ $nonce = filter_input(INPUT_POST, 'restaurant_data_nonce', FILTER_SANITIZE_STRING); if ( empty($nonce) || ! wp_verify_nonce( $nonce, 'restaurant_data' ) ) return; /* Check the user's permissions */ if ( ! current_user_can( 'edit_post', $postid ) ) return; /* Continue only for Company CPT */ $post = get_post( $postid ); if ( $post->post_type !== 'company' ) return; /* Get & sanitize user input */ $rname = filter_input(INPUT_POST, 'restaurant_name', FILTER_SANITIZE_STRING); $rdesc = filter_input(INPUT_POST, 'restaurant_desc', FILTER_SANITIZE_STRING); /* Update the meta fields in the database */ update_post_meta( $postid, '_restaurant_name', $rname ); update_post_meta( $postid, '_restaurant_desc', $rdesc ); /* Now check if exists a restaurant for this company */ $meta = array( array( 'key' => '_company_ID', 'value' => $post->ID ) ); $exists = new WP_Query( 'post_type' => 'restaurant', 'meta_query' => $meta ); if ( ! $exists->found_posts ) { /* restaurant for company does not exists */ $restaurant = array( 'post_type' => 'restaurant', 'post_title' => $rname, 'post_content' => $rdesc, 'post_author' => $post->post_author, 'post_status' => 'publish' ); $rid = wp_insert_post( $restaurant ); /* save restaurant post */ if ( is_numeric($rid) && (int) $rid > 0 ) { /* save company ID in a restaurant meta field */ update_post_meta( $rid, '_company_ID', $post->ID ); /* I inserted restaurant post name/description as post title/description but if you need restaurant them also in custom fields */ update_post_meta( $rid, '_restaurant_name', $rname ); update_post_meta( $rid, '_restaurant_desc', $rdesc ); } } } 

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