在自定义类中调用Wordpress函数

时间:2016-06-17 09:58:59

标签: php wordpress

我创建了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错误。我假设有一个命名空间引用或我缺少的东西,但我不知道是什么导致这个。

1 个答案:

答案 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;
}