我创建了PHP对象,以便更好地处理我的自定义帖子。在对象中,我有一个函数,它将根据wordpress post填充对象。
public function ByPost($post) {
$this->ID = $post->ID;
$this->Title = $post->post_title;
$this->Slug = $post->post_name;
$this->Description = $post->post_content;
$this->AlbumID = get_post_meta( $post->ID, 'albumid', true );
return $this;
}
然后我从循环中调用此方法。
$album = Album::Get()->ByPost($post);
我遇到的问题是get_post_meta函数无效。如果我在它工作的对象之外调用它,但在对象内我没有得到任何东西。我甚至没有得到PHP错误。我假设有一个命名空间引用或我缺少的东西,但我不知道是什么导致这个。
答案 0 :(得分:1)
在内部功能中,将$post
定义为全局,并使用$post->ID
global $post;
$this->AlbumID = get_post_meta( $post->ID, 'sandbox_description', true );
您还需要更改函数参数名称。
将function ByPost($post){
更改为function ByPost($post_new){
或其他内容,并将数据存储在数组中。
public function ByPost($post_new) {
global $post;
$data = array();
$data['Title'] = $post_new->post_title;
$data['Slug'] = $post_new->post_name;
$data['Description'] = $post_new->post_content;
$data['AlbumID'] = get_post_meta( $post->ID, 'sandbox_description', true );
return $data;
}