2016-06-17 14 views
0

カスタム投稿をより適切に処理できるようにPHPオブジェクトを作成しました。オブジェクトには、ワードプレスの投稿に基づいてオブジェクトを設定する関数があります。カスタムクラス内で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_new){または何か他のものと店舗データへfunction ByPost($post){

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は変数としてメソッドに渡されるので、関数はグローバルスコープを必要としません。クラスが静的であることと関係するものでなければなりません。 –

関連する問題