Как мне добавить страницу на сайт WordPress и присвоить ей определенный короткий код с помощью пользовательского плагина

#php #wordpress #wordpress-shortcode #wordpress-plugin-creation

#php #wordpress (wordpress ) #wordpress-короткий код #wordpress-создание плагина #wordpress

Вопрос:

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

         add_action( 'admin_init', 'cart_page' );
    function cart_page() {
    //Add cart page to website
    
        if ( get_option( 'cart' ) === "checked" AND get_option('cart_exist') === false) {
    //        IF CART HAS BEEN CHECKED
            $new_page_id = wp_insert_post( array(
                'post_title'     => 'Cart',
                'post_type'      => 'page',
                'post_name'      => 'Cart',
                'comment_status' => 'closed',
                'ping_status'    => 'closed',
                'post_content'   => '',
                'post_status'    => 'publish',
                'post_author'    => get_user_by( 'id', 1 )->user_id,
                'menu_order'     => 0,
                // Assign page template
                'page_template'  => plugins_url('page_templates/cart_template.php', __FILE__ )
    
    
            ) );
            wp_insert_post($new_page_id);
            update_option( 'cart_exist', true );
        }
    
        else if (get_option('cart') === "" AND get_option('cart_exist') === true) {
    //        IF CUSTOMER DOES NOT WANT CART
            update_option( 'cart_exist', false );
        }
    }
  

Вот как выглядит моя страница шаблона в плагине.

 get_header();

echo do_shortcode( '[cart_portal]' );

get_footer();
?>

  

Ответ №1:

В моем случае я нашел решение этой простой проблемы. Если мне просто нужно добавить шорткод, я могу добавить его в ‘post_content’. Я все еще хотел бы знать, как добавить шаблон. Но вы можете использовать файл для импорта всего макета, если хотите. Но он не может быть использован с визуальными композиторами.

Смотрите пример ниже…

  $new_page_id = array(
            'post_title'     => 'Cart',
            'post_type'      => 'page',
            'post_name'      => 'Cart',
            'comment_status' => 'closed',
            'ping_status'    => 'closed',
            'post_content'   => '[cart_portal]',
            'post_status'    => 'publish',
            'post_author'    => get_user_by( 'id', 1 )->user_id,
            'menu_order'     => 0,

        );
        wp_insert_post($new_page_id);