Поле ACF для создания наборов страниц при сохранении - PullRequest
0 голосов
/ 26 февраля 2020

У меня странный запрос, я не уверен, возможно ли это вообще. Но я постараюсь отработать процесс, описанный ниже, и если кто-нибудь может помочь мне разобраться с этим, это было бы удивительно!

В идеале процесс выглядит следующим образом:

  1. Админ уходит на странице родительских опций, на странице опций есть поле повторителя, которое называется добавить новую компанию. Это будет просто поле с заголовком.
  2. Администратор заполняет поле и нажимает Сохранить. Это создаст страницу с дополнительными опциями с этим именем, в поле опций будет набор полей, таких как lo go, палитра цветов и некоторые текстовые поля (это может быть набор полей из ACF, если это возможно). ).
  3. Также при создании / сохранении этого исходного поля повторителя из набора шаблонов генерируется набор страниц. По сути, используя имя из поля повторителя в качестве заголовка главной страницы для страницы верхнего уровня, а все подстраницы ниже просто генерируются динамически. Они не должны иметь ничего особенного, они просто должны генерировать из набора шаблонов страниц. Он должен иметь возможность связываться с вновь сгенерированными битами компании из поля подопций.

Это, по существу, даст администратору новый набор страниц, которые будут использовать новые опции lo go. / colors et c. Почти необходимо сгенерировать новый набор шаблонов на основе мастер-шаблонов, чтобы динамически убедиться, что он выбрал правильную информацию со страницы подопций.

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

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

Если кто-нибудь может помочь мне разобраться с этим, это было бы удивительно!

Заранее спасибо за любую помощь:)

1 Ответ

0 голосов
/ 26 февраля 2020

Вы должны иметь возможность подключиться к действию save_post и создать оттуда новые подстраницы.

add_action( 'save_post', 'create_sub_pages' ); //Plug into save_post action

//Function create sub_pages
function create_sub_pages($post_ID) {

    //Repeater field name
    $repeater_field_array = get_field('repeater_field_name');

    //Loops through all of the items in the repeater field
    foreach($repeater_field_array as $key => $value) {

        //Check to see if there is already a sub page with that post name
        $child_pages = get_pages(array( 'child_of' => $post_ID ));
        $child_page_exists = false;

        foreach($child_pages as $pages) {
            if ($pages->post_title === $key) {
                    $child_page_exists = true;
            }
        }

        //If not, set up the creation of the new post
        if ($child_page_exists === false) {
            $new_page_title = esc_html__( $key );
            $new_page_content = ''; 
            $new_page = array(
                'post_type'      => 'page',
                'post_date'      => esc_attr( date('Y-m-d H:i:s', time()) ),
                'post_date_gmt'  => esc_attr( date('Y-m-d H:i:s', time()) ),
                'post_title'     => esc_attr( $new_page_title ),
                'post_name'      => sanitize_title( $new_page_title ), //This could from the sub_field in the repeater
                'post_content'   => $new_page_content,
                'post_status'    => 'publish',
                'post_parent'    => $post_ID,
                'menu_order'     => $new_page_order
            );
            $new_page_id = wp_insert_post( $new_page );
            update_post_meta( $new_page_id, '_wp_page_template', $value );
        }

    }

}

Опять же, это всего лишь сплитбол, так как кода для просмотра было немного, но он мог поможет вам двигаться в правильном направлении.

...