Failed to create page on plugin activation

I am trying to create a plugin but I am currently unable to create the activation page, see the code below, where am I going wrong? It doesn't create anything other than activation.

include('add-acf.php');


if(!class_exists('TW_Contact')) {
    class TW_Contact {


        public function __construct() {         
            add_filter( 'single_template', array($this, 'tw_single_template') );            
            add_shortcode( 'tw_contact', array($this, 'tw_contact_shortcode') );

            $this->bootstrap();

            //echo 'construct';
            //exit;
        }


        /**
         * Setup the environment for the plugin
         */
        public function bootstrap() {

            //echo 'bootstrap';
            //exit;

            register_activation_hook( __FILE__, array( $this, 'activate' ) );
            register_activation_hook( __FILE__, 'my_plugin_install_function');
            add_action( 'init', array( $this, 'register_custom_fields' ) );
            add_action( 'wp_enqueue_scripts', array($this, 'tw_enqueue_scripts') );
        }


        /**
         * Do some stuff upon activation
         */
        public function activate() {
            $this->register_custom_fields();
            $this->tw_enqueue_scripts();

            echo 'before';

            // Flush rewrite rules so that users can access custom post types on the front-end right away
            flush_rewrite_rules();

            echo 'after';
        }

        function my_plugin_install_function() {
            //post status and options
            $post = array(
                  'comment_status' => 'closed',
                  'ping_status' =>  'closed' ,
                  'post_author' => 1,
                  'post_date' => date('Y-m-d H:i:s'),
                  'post_name' => 'Checklists',
                  'post_status' => 'publish' ,
                  'post_title' => 'Checklists',
                  'post_type' => 'page',
            );  
            wp_insert_post( $post );
        }   

    }
}

      

+3


source to share


3 answers


It all came down to how I was calling the function, it should be:



        register_activation_hook( MYPLUGIN_FILE, array( $this, 'plugin_activated' ) );
        register_deactivation_hook( MYPLUGIN_FILE, array($this, 'plugin_deactivated' ));

      

0


source


Make sure you haven't created the Checklists page yet. Try the code.



include('add-acf.php');


if(!class_exists('TW_Contact')) {
    class TW_Contact {


        public function __construct() {         
            add_filter( 'single_template', array($this, 'tw_single_template') );            
            add_shortcode( 'tw_contact', array($this, 'tw_contact_shortcode') );

            $this->bootstrap();

            //echo 'construct';
            //exit;
        }


        /**
         * Setup the environment for the plugin
         */
        public function bootstrap() {

            //echo 'bootstrap';
            //exit;

            register_activation_hook( __FILE__, array( $this, 'activate' ) );
            register_activation_hook( __FILE__,  array( $this,'my_plugin_install_function');
            add_action( 'init', array( $this, 'register_custom_fields' ) );
            add_action( 'wp_enqueue_scripts', array($this, 'tw_enqueue_scripts') );
        }


        /**
         * Do some stuff upon activation
         */
        public function activate() {
            $this->register_custom_fields();
            $this->tw_enqueue_scripts();

            echo 'before';

            // Flush rewrite rules so that users can access custom post types on the front-end right away
            flush_rewrite_rules();

            echo 'after';
        }

        function my_plugin_install_function() {
            //post status and options
            $post = array(
                  'comment_status' => 'closed',
                  'ping_status' =>  'closed' ,
                  'post_author' => 1,
                  'post_date' => date('Y-m-d H:i:s'),
                  'post_name' => 'Checklists',
                  'post_status' => 'publish' ,
                  'post_title' => 'Checklists',
                  'post_type' => 'page',
            );  
            wp_insert_post( $post );
        }   

    }
}

      

0


source


if(!class_exists('TW_Contact')) {
    class TW_Contact {


        public function __construct() {         
          //  add_filter( 'single_template', array($this, 'tw_single_template') );            
          //  add_shortcode( 'tw_contact', array($this, 'tw_contact_shortcode') );

            $this->bootstrap();

            //echo 'construct';
            //exit;
        }


        /**
         * Setup the environment for the plugin
         */
        public function bootstrap() {

            //echo 'bootstrap';
            //exit;

          //  register_activation_hook( __FILE__, array( $this, 'activate' ) );
            register_activation_hook( __FILE__, array( $this, 'my_plugin_install_function' ) );
           // add_action( 'init', array( $this, 'register_custom_fields' ) );
          //   add_action( 'wp_enqueue_scripts', array($this, 'tw_enqueue_scripts') );
        }


        /**
         * Do some stuff upon activation
         */
        public function activate() {
        //    $this->register_custom_fields();
            $this->tw_enqueue_scripts();

           // echo 'before';

            // Flush rewrite rules so that users can access custom post types on the front-end right away
           // flush_rewrite_rules();

           // echo 'after';
        }

        function my_plugin_install_function() {
            //post status and options
            $post = array(
                  'comment_status' => 'closed',
                  'ping_status' =>  'closed' ,
                  'post_author' => 1,
                  'post_date' => date('Y-m-d H:i:s'),
                  'post_name' => 'Checklists',
                  'post_status' => 'publish' ,
                  'post_title' => 'Checklists',
                  'post_type' => 'post',
            );  
            wp_insert_post( $post );
        }   

    }

   global $obj;
   $obj = new TW_Contact();

}

      

This code will work. You must initialize the object. I have commented out some unwanted codes. Hope it works.

0


source







All Articles