I’m trying to create a plugin but at the moment I’m having trouble creating a page on activation, please see code below, where am I going wrong? It doesn’t create anything but activates fine.
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 );
}
}
}
Make sure that page ‘Checklists’ is not already created.
Try the code.
This code will work .you should initialize object . I had commented some unwanted code .Hope this will work.
It all came down to the way I was calling the function, should be: