I have made an action that allows a page to be made if the switch in the setting is checked. After it is confirmed it’s checked it does create the page, but without the template added. How do I get my template to work?
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 ); } }
This is what my template page looks like in the plugin.
get_header(); echo do_shortcode( '[cart_portal]' ); get_footer(); ?>
Advertisement
Answer
In my case, I have figured out a solution for the simple problem. If I just need to add a shortcode I can add it to ‘post_content’. I would still like to know how to add template. But you can use a file to import the entire layout if you’d like still. But it cannot be used with visual composers.
See example below…
$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);