Intereting Posts
Как сделать число сообщений в блоге настраиваемым полем? отображение подключенного пользователя для публикации Можете ли вы, чтобы список пользователей был предварительно отсортирован по определенному столбцу? Сортировка сообщений с настраиваемым мета-ключом по умолчанию, который в настоящее время установлен как необязательный Получить переменную из объекта в массиве используя проверенную функцию для проверки значения по массиву Как настроить таргетинг на виджеты последних сообщений и последних комментариев по умолчанию с pre_get_posts? Comma разделяет список ID как массив? Перекалибровать _wp_attachment_metadata Размеры изображения Как включить HTML в выдержки? Пользовательский поиск настраиваемого типа сообщений, настраиваемых полей мета и поиска CSS не втягивается в диалог JQuery UI Почему WordPress фильтрует URL-адрес Pastebin? Почему is_multisite возвращает true, когда это единственная установка? Предпочтительный способ включения расширенных настраиваемых полей в плагин?

расширенные настраиваемые поля плагина последнего поля ввода в новых сообщениях

У меня возникла проблема с обновлением переднего конца в плагине post + advanced custom fields, который не очищает входные данные на новом посту. Он правильно вставляет или обновляет форму, но когда вы попали туда в первый раз, вы видите последние данные ввода в полях из плагина acf. У меня есть поиск проблемы, и я нашел одно сообщение, которое предлагает правильно фильтровать $ post_id, я тоже попробовал.

<?php acf_form_head(); if ( is_user_logged_in() ) { $current_post = isset($_GET['post'])?intval($_GET['post']):''; if($_POST) { $post_information = array( 'post_title' => wp_strip_all_tags( $_POST['postTitle'] ), 'post_content' => $_POST['postContent'], 'post_type' => 'post', 'post_status' => 'pending' ); if($current_post) { $post_information['ID'] = $current_post; } $post_id = wp_insert_post( $post_information ); $_POST['return'] = add_query_arg( array('post' => $post_id), $_POST['return'] ); //print_r($current_post); //exit(); } ?> <?php get_header(); ?> <?php if($current_post) { ?> <?php $query = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => '-1','page_id'=>$current_post ) ); ?> <?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?> <?php $title = get_the_title(); $content = get_the_content() ?> <?php endwhile; endif; ?> <?php wp_reset_query(); ?> <?php } else { $title = ''; $content = ''; } ?> <main role="main"> <!-- section --> <section> <form action="" id="primaryPostForm" method="POST"> <fieldset> <label for="postTitle"> <?php _e( 'Post\'s Title:', 'framework' ); ?> </label> <input type="text" name="postTitle" id="postTitle" value="<?php echo $title; ?>" class="required" /> </fieldset> <?php if ( $postTitleError != '' ) { ?> <span class="error"><?php echo $postTitleError; ?></span> <div class="clearfix"></div> <?php } ?> <fieldset> <label for="postContent"> <?php _e( 'Post\'s Content:', 'framework' ); ?> </label> <textarea name="postContent" id="postContent" rows="8" cols="30"><?php echo $content; ?></textarea> </fieldset> <fieldset> <?php wp_dropdown_categories(""); ?> <?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?> <input type="hidden" name="submitted" id="submitted" value="true" /> <?php $args = array( /*'post_id' => 'new_post',*/ 'field_groups' => array( 19 ) ); acf_form( $args ); ?> </fieldset> </form> 

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

Вот пример документации плагина

Но мне нужно также отредактировать содержимое сообщения, поэтому я создаю цикл, чтобы найти сообщение, в котором вы можете создать запрос, чтобы получить его, и все будет хорошо. Поэтому я получаю такой контент:

 <?php $current_post = isset($_GET['post'])?intval($_GET['post']):'new'; acf_form_head(); ?> <?php get_header(); ?> <?php if($current_post!='new') { ?> <?php $query = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => '-1', 'page_id'=>$current_post,'author'=>$current_user->ID ) ); ?> <?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?> <?php $title = get_the_title(); $content = get_the_content(); $post_categories = wp_get_post_categories( get_the_ID() ); $cats = array(); foreach($post_categories as $c){ $cat = get_category( $c ); $cats[] = $cat->cat_ID; } ?> <?php endwhile; endif; ?> <?php wp_reset_query(); ?> <?php } else { $title = ''; $content = ''; } ?> 

А затем в функции.php у меня есть фильтр, который получает информацию при отправке формы следующим образом:

 function my_pre_save_post( $post_id ) { $current_post = isset($_GET['post'])?intval($_GET['post']):''; if($_POST['cat']) { $cats = $_POST['cat']; foreach($cats as $catp) { $catobject = get_category($catp,false); // Get the Category object by the id of current category if($catobject->category_parent); // the id of the parent category { array_push($_POST['cat'],$catobject->category_parent); } } $_POST['cat']=array_unique($_POST['cat']); } // Create a new post $post_information = array( 'post_title' => wp_strip_all_tags( $_POST['postTitle'] ), 'post_content' => $_POST['postContent'], 'post_type' => 'post', 'post_status' => 'pending', 'post_category'=>$_POST['cat'] ); if($current_post) { $post_information['ID'] = $current_post; } // insert the post $post_id = wp_insert_post( $post_information ); $_POST['return'] = add_query_arg( array('post' => $post_id), $_POST['return'] ); // return the new ID return $post_id; } 

Также я очищу некоторые параметры в таблице опций с полями, начинающимися с «new_», и добавьте этот код, чтобы отделить новое сообщение от старого, когда вызывается визуализация расширенных пользовательских полей.

 <?php $args = array( 'post_id' => $current_post , 'field_groups' => array( 19 ) ); acf_form( $args ); ?> 

Это решит мою проблему, поэтому я хотел поделиться с кем-то, кто испытывает те же проблемы.