2017-12-15 13 views
2

Wordpressサイト用のPHPクラスを作成しています。次のメソッドは正常に動作しますが、引数を渡して別のメソッド(下のコードを参照)内で呼び出すことで少し抽象化しようとすると、もう動作しません。これが動作していないOOP PHPメソッドが別のメソッド内で呼び出されたときに機能しない

public function user_has_submitted_in_dog_category() { 

    $args = array(
     'post_type' => 'submissions', 
     'author' => get_current_user_id(), 
     'tax_query' => array(
      array(
       'taxonomy' => 'submissions_categories', 
       'field' => 'slug', 
       'terms' => 'dog' 
      ) 
     ) 
    ); 

    $user_posts = get_posts($args); 

    if(count($user_posts)) 
     return true; 

} 

public function user_has_submitted_in_dog_category() { 

    $this->user_has_submitted_in_animal_category('dog'); 

} 

public function user_has_submitted_in_animal_category($category) { 

    $args = array(
     'post_type' => 'submissions', 
     'author' => get_current_user_id(), 
     'tax_query' => array(
      array(
       'taxonomy' => 'submissions_categories', 
       'field' => 'slug', 
       'terms' => $category 
      ) 
     ) 
    ); 

    $user_posts = get_posts($args); 

    if(count($user_posts)) 
     return true; 

} 

を働いていないことで、私はuser_has_submitted_in_dog_category()がtrueを返していないことを意味します。コードが印刷さYou have not submitted yetのブロック

<?php if($submission->user_has_submitted_in_dog_category()) : ?> 
    <div class="msg">You have already submitted.</div> 
<?php else : ?> 
    <div class="msg">You have not submitted yet.</div> 
<?php endif; ?> 

が、私は私のカスタム分類dogに記事を持っている次のように私は、テンプレートファイルにそれを呼び出します。

+0

どのようにして ' – Ice76

+3

がどのようにして、 "動作しない" を定義しない)(' user_has_submitted_in_dog_categoryを呼び出していますか?あなたは何かエラーを起こしていますか?予想される行動と実際に見ている行動は何ですか? (ヒント:おそらく '$ this-> user_has_submitted_in_animal_category( 'dog');の前に' return'を置くといいでしょう。そうしないと、外部関数を呼び出すときに戻り値は渡されません) –

+0

具体的には「うまくいかない」という意味ですか?スローされたエラー?何も起こりません? PHPのエラー出力はデフォルトではオフになっているので、出力が得られない場合は、一時的にオンにするか、オンになっているテスト環境を使用すると便利です。 –

答えて

1

を:メソッドが動作するオブジェクトのインスタンスを必要としていないようだとあなたは自分でやってオフ最善かもしれません。

public function user_has_submitted_in_dog_category() { 

    return $this->user_has_submitted_in_animal_category('dog'); 

} 
0

Wordpressがメソッドを静的に呼び出す可能性があります。あなたはあなたの最初の(犬)メソッドから返す必要が

public function user_has_submitted_in_dog_category() { 

    MyClass::user_has_submitted_in_animal_category('dog'); 

} 
関連する問題