require_once() and require functions not working

603 Views Asked by At

I'm developping a Wordpress plugin and i want in my main file in init function to require another page but it's not working, i've tried require(),reqiure_once() and include_once() but none of them worked ! i want to add a tab to woocommerce settings ps: if i delete the require once and bring the code from /inc/pages.php to main.php it works well but i want to require that file so that my main class will not be so long.

so any solutions?

function init() in main class

<?php
/*
* //about plugin information 
* 
*/ 

define('WP_DEBUG', true);


// Exit if accessed directly
if( !defined( 'ABSPATH' ) ) exit;


class Main 
{
  public $id='Main';
  public static $slug='';
  public static $wc_status_msg;  
  public static $wc_status;  
  public static $path='';

    public function instance(){
        add_action('plugins_loaded', array($this,'setup_main'));
        register_deactivation_hook(__FILE__,array($this,'deactivate'));
        register_activation_hook(__FILE__,(array($this,'activate')));

    }
    public function setup_main(){
        if(is_admin()){   
            add_action('init', array($this,'init'));

        }
    }
    public function init(){
  
  require_once(self::$path . "inc/pages.php");


    }

   
}

if( class_exists( 'Main' ) ){

    $Main=new Main();
    $Main->instance();
}



?>

the pages.php file is in /inc folder :

<?php
// Exit if accessed directly
if( !defined( 'ABSPATH' ) ) exit;


public /**
 * 
 */
class Plugin_pages extends Main
{
    
    function __construct()
    {
         add_filter('woocommerce_settings_tabs_array',array($this,'add_settings_tab'),50);

    }



  /**
  * Add Settings tab.
  *       
  * @param mixed $settings_tabs
  */
  public function add_settings_tab($settings_tabs){
        if(current_user_can('administrator')){ 
  $settings_tabs[$this->id] = __( 'Salesforce', 'woocommerce_settings_tabs_array' );
        }
  return $settings_tabs;
  }













}
if( class_exists( 'Plugin_pages' ) ){

    new Plugin_pages();
    
}


1

There are 1 best solutions below

0
Salsabil Sehli On

Problem solved: the name of the plugin folder was containing space like "My plugin" while it should be without space like "My-plugin"