使用全局$POST的正确方法是什么?

时间:2019-08-03 作者:Alt C

我正在使用global $post 在一节课上多次。这些是我的疑问

那是一种不好的做法吗

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

    public function2(){
        global $post;
    }

    public function3(){
        global $post;
    }
}

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

使用全局$post 变量本身,尽管有人会说使用全局变量总是不好的。但由于您在同一个对象中多次使用它,因此最好只获取一次帖子并将其存储在类属性中。

我更喜欢使用WordPressget_post() 功能,因为它看起来更干净get_post() 如果全球$post 变量不是WP\\u 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\' ] );

相关推荐

Modals using loops and ACF

我试图制作一个页面,查询特定类别(“景点”)的每一篇帖子。我已经能够成功地获得帖子,我只需要让modals工作。我在我的循环中做了一个按钮,它的标题是循环所在的任何帖子。我希望这样,每当人们单击该按钮时,它就会打开一个模式,显示代码中ACF I列表中的所有字段。不过,我有一些问题。由于某种原因,我无法让javascript正常工作。现在都在页面模板文件中,但我已经尝试通过函数将脚本排队。php等。我的猜测是,我正在尝试制作文档。getElementsByClassName而不是documents。getE