2016-06-17 4 views
0

Я создал объект PHP, чтобы лучше разрешить мне обрабатывать свои пользовательские сообщения. В объекте у меня есть функция, которая будет заполнять объект на основе сообщения wordpress.Вызов функций Wordpress внутри настраиваемого класса

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

Что вы пытались отладить до сих пор? например. вызывает ли функцию вызов, но ничего не возвращает? –

+0

он ничего не делает. если я использую var_dump(). он ничего не делает. –

ответ

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; 
} 
+0

это должно работать, когда нет глобального объекта сообщения. так как я хочу иметь возможность генерировать список объектов и т. д. –

+0

Вы пробовали? –

+0

Я пробовал там, не работал. $ post передается как переменная в метод, поэтому функции не требуется глобальная область. Это должно быть связано с тем, что класс статичен. –

Смежные вопросы