web-dev-qa-db-ja.com

グローバル$ postを使用する適切な方法は何ですか?

使っています global $postクラスで複数回。これらは私の疑問です

  1. それは悪い習慣ですか?
  2. ウェブサイトが遅くなることはありますか?
  3. クラス内でそれを使用する適切な方法は何ですか

    class Test{
        public function(){
            global $post;
        }
    
        public function2(){
            global $post;
        }
    
        public function3(){
            global $post;
        }
    }
    
1

グローバル$post変数自体を使用しても問題はありませんが、グローバル変数の使用は常に悪いと言う人もいます。ただし、同じオブジェクトで複数回使用しているため、一度投稿を取得してクラスプロパティに保存することをお勧めします。

WordPress get_post()関数の方が見栄えがよく、グローバル$post変数がWP_Postオブジェクトでない場合はget_post()が何らかの処理を行うため、 。クラスでグローバル$post変数を複数回使用しても、それが主な心配である場合でも、サイトの速度は低下しません。

したがって、私のクラスは次のようになります。

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.
}

グローバル$postオブジェクトを変更する場合は、the_postアクションフックを使用して、セットアップ直後に$postオブジェクトにアクセスすることをお勧めします。

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