web-dev-qa-db-fra.com

Quelle est la bonne méthode d'utilisation de $ post global?

J'utilise global $post plusieurs fois dans une classe. Ce sont mes doutes

  1. Est-ce une mauvaise pratique?
  2. Peut-il en résulter des sites Web lents?
  3. Quelle est la bonne façon de l'utiliser dans une classe

    class Test{
        public function(){
            global $post;
        }
    
        public function2(){
            global $post;
        }
    
        public function3(){
            global $post;
        }
    }
    
1
Latheesh V M Villa

Il n'y a rien de mal à utiliser la variable globale $post En soi, bien qu'il y ait des gens qui diront que l'utilisation de variables globales est toujours mauvaise. Mais comme vous l'utilisez plusieurs fois dans le même objet, il serait préférable de ne récupérer le message qu'une seule fois et de le stocker dans une propriété de classe.

Je préfère utiliser la fonction WordPress get_post() car elle a l'air plus propre et get_post() fait des choses si la variable globale $post N'est pas un objet WP_Post. L'utilisation de la variable globale $post plusieurs fois dans une classe ne ralentira cependant pas votre site, si c'est votre principale préoccupation.

Donc ma classe pourrait ressembler à ceci:

class Test {
  protected $post;
  public function __construct() {
    $this->post = \get_post();
  }
  public function fizzbuzz() {
    //* Use $this->post instead of global $post
  }
  ... and etc. Mainly etc.
}

Si vous cherchez à modifier l'objet global $post, Une meilleure méthode serait d'utiliser le crochet d'action the_post Pour accéder à l'objet $post Immédiatement après sa configuration.

class Test {
  public function the_post( $post_object ) {
    //* Do something useful with the post object
  }
}
add_action( 'the_post', [ new Test(), 'the_post' ] );
1
Nathan Johnson