8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

je crée un plugin dans WordPress en utilisation l'option API

Je crée une classe PHP avec une variable statique pour récupérer un jeu d'options dans WordPress (gibi_bergerac_general_options ), c'est un tableau sérialisé (par WordPress)


  class GIBI_BERGERAC_UTILS_SETTINGS
  {
    // pouvoir accéder $options sans instancier la classe
    public static $options;

    function __construct()
    {
      // ::self parce que static
      self::$options = get_option('gibi_bergerac_general_options');

      add_action('admin_init', array($this, 'fn_admin_init'));
    }  // ---------fin du constructeur

// suite du code de la classe...



Lorsque j'invoque la classe, un peu plus loin, si j'interroge la variable statique $options
var_dump($GIBI_Utils_Settings::$options['gibi_coordonnees_logo'])
j'obtiens un tableau PHP avec toutes les valeurs contenues dans mes options


      /* -------------------------------------------  */
      /*           Interface des Settings                    */
      /* -------------------------------------------  */
      // Settings API définition des options front-page
      
      require_once(GIBI_BERGERAC_UTILS_PATH . 'inc/settings/class.gibioctet-settings.php');
      $GIBI_Utils_Settings = new GIBI_BERGERAC_UTILS_SETTINGS();
     // la ligne suivante fonctionne
      wp_die(var_dump($GIBI_Utils_Settings::$options['gibi_coordonnees_logo']));



Là j'étais dans le contexte du plugin.

Maintenant, au niveau du thème je n'arrive pas à utiliser la variable statique $options dans les fichiers du thème (je suis obligé de passer par get_option() pour récupérer les valeurs).
Avec les templates chargés dans WordPress par get_template_part() je suis obligé à chaque fois d'invoquer la fonction get_option().
Je n'arrive pas à globaliser l'appel des options.
Modifié par lionel_css3 (07 Oct 2024 - 10:07)
Bonjour,

Pas sûr d'avoir compris la démarche ou le problème mais quelques remarques :

Ta propriété statique $options est initialisée dans le constructeur de ta classe.
Tu es donc obligé d'instancier la classe pour utiliser la propriété $options, pourquoi utiliser une propriété statique du coup ?

Une idée pour accéder aux options sans instancier la classe pourrit être l'utilisation d'une méthode statique qui retourne directement le retour de get_option :
class GIBI_BERGERAC_UTILS_SETTINGS {

    public static getOptions() {
		return get_option('gibi_bergerac_general_options');
	}


Néanmoins, pas sûr de voir l'interêt de passer par une méthode statique, autant appeler directement la fonction get_option() là où tu en as besoin.

Que veux dire "au niveau du thème je n'arrive pas à utiliser la variable statique $options".
La variable est indéfinie ? vide ? un éventuel message d'erreur ?