Я кодирую свой самый первый плагин. Это что-то вроде дополнения к теме, добавление к ней полезных вещей. Одним из них является то, что я собираю данные о еде, и поэтому я позволяю пользователям добавлять разные продукты питания через контактную форму. Сама форма довольно стандартная, и я использую хук save_posted_data для создания поста еды (как пользовательский тип поста).
Выглядит так:
function save_posted_data( $posted_data ) {
$form_id = $contact_form->id();
if( $form_id == 1903 ) {
$args = array(
'post_type' => 'np-food',
'post_status'=>'draft',
'post_title'=>$posted_data['food-name'],
'post_content'=>$posted_data['food-desc'],
);
$post_id = wp_insert_post($args);
if(!is_wp_error($post_id)){
if( isset($posted_data['food-name']) ){
update_post_meta($post_id, 'food-name', $posted_data['food-name']);
}
// and so on
}
}
return $posted_data;
}
add_filter( 'wpcf7_posted_data', 'save_posted_data' );
Моя проблема: При проверке формы деталь должна создавать сообщение, только когда выбранная форма - та, которую использует пользователь. Но это не работает здесь, потому что каждая другая форма CF 7 заканчивается бесконечным l oop при нажатии кнопки Отправить. Только форма 1903 делает что-то (создает сообщение с нужными метаполями). Все остальное не работает.
Кто-нибудь знает, что мне здесь не хватает?