1
\$\begingroup\$

I am creating my first WP/WooCommerce plugin. I was following instructions from WordPress Codex during development, but I wanted to review it here, to make sure I am on the right path. First things I would like to get reviewed are plugin-name.php file and plugin file/folders structure.

Questions/doubts:

  • I was using singleton classes. Is that ok?
  • Did I miss something in plugin-name.php file? Is everything needed there?
  • Is order of code OK in plugin-name.php file? Are if statements OK?
  • About project folder and files structure, is it ok to put my global.css and functions.php in the root of the plugin, along with plugin-name.php file, or should I move them into folder(s)? If yes, how should I name those folders?
  • If there is something that should be different beside these things I mentioned above, please let me know.

plugin-name.php file:

<?php
/**
 * Plugin Name:     {Plugin name}
 * Plugin URI:      https://github.com/tahireu/{plugin_name}
 * Description:     {Description}
 * Version:         1.0.0
 * Author:          Tahireu
 * Author URI:      https://github.com/tahireu/
 * License:         GPL
 * License URI:     http://www.opensource.org/licenses/gpl-license.php
 */


/*
 * Prevent intruders from sneaking around
 * */
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );


/*
 * Variables
 * */
const {PLUGIN_NAME}_TEXT_DOMAIN = "wc-{plugin-name}";


/*
 * Load {PLUGIN_NAME}_Activator class before WooCommerce check
 * */
require plugin_dir_path( __FILE__ ) . 'includes/class-{plugin_name}-activator.php';



/*
 * Check if WooCommerce is installed and active
 * */
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) {


    /*
     * Current plugin version - https://semver.org
     * This should be updated as new versions are released
     * */
    define( 'WC_{PLUGIN_NAME}_VERSION', '1.0.0' );



    /*
     * Load functions and classes
     * */
    require plugin_dir_path( __FILE__ ) . 'functions.php';
    require plugin_dir_path( __FILE__ ) . 'admin/class-{plugin-name}-admin.php';
    require plugin_dir_path( __FILE__ ) . 'public/class-{plugin-name}-public.php';



    /*
     * Create database table on plugin activation
     * */
    function create_table(){
        {PLUGIN_NAME}_activator::create_{plugin-name}_table();
    }

    register_activation_hook( __FILE__, 'create_table' );



    /*
     * Do the work
     * */
    {PLUGIN_NAME}_admin::on_load();
    {PLUGIN_NAME}_public::on_load();


} else {

    /*
     * Abort and display info message
     * */
    {PLUGIN_NAME}_activator::abort();

}

Plugin files/folders structure:

enter image description here

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.