2017-12-15 18 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() 사실 반환하지 않습니다 것을 의미한다. 다음과 같이 내가 템플릿 파일을 호출 코드가 인쇄 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

어떻게 호출하는'user_has_submitted_in_dog_category()' – Ice76

+3

가 어떻게 "작동하지 않는"정의합니까? 오류가 있습니까? 예상되는 행동 대 당신이 실제로보고있는 행동은 무엇입니까? (힌트 : 아마도 $ 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'); 

}