当在另一个方法中调用时,OOP PHP方法不起作用

时间:2017-12-15 18:39:25

标签: php oop

我正在为Wordpress网站创建一个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。我在模板文件中将其称为如下:

<?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; ?>

代码块打印You have not submitted yet,但我的自定义分类dog中有帖子。

2 个答案:

答案 0 :(得分:1)

您需要从第一个(狗)方法返回。

foreach

答案 1 :(得分:0)

Wordpress可能会静态调用该方法。您可能最好自己这样做,因为该方法似乎不需要对象实例才能工作:

public function user_has_submitted_in_dog_category() {

  MyClass::user_has_submitted_in_animal_category( 'dog' );

}
相关问题