为什么重复使用此功能不起作用?

时间:2018-08-09 作者:user4630

我有一个函数,它根据各种语句、某些页面、您所在的cpt等添加一个类。

我将此函数放在页面的各个部分中,以便于使用<?php is_service_class() ?>

我不确定这是否是正确的方法,但它有点有效。然而,我只是想知道为什么它只起作用once? 我正在努力学习函数和对错。

if ( ! function_exists( \'is_service_class\' ) ) {

function is_service_class () {


    if ( ! function_exists( \'is_personal\' ) ) { 

        function is_personal() {
            return ( is_post_type_archive(\'pk-personal\') || is_singular( \'pk-personal\' ) || is_page( array( 6814, \'personal-family\', \'Personal & Family Services\' ) ) ) ? true : false ;

        }

        if ( is_personal() ) {
            echo \'personal-service\'; 
        } 

    }

    if ( ! function_exists( \'is_business\' ) ) {

        function is_business() {
            return ( is_post_type_archive(\'pk-business\')  || is_singular( \'pk-business\' ) || is_page( array( 6821, \'business-services\', \'Business Services\' ) ) ) ? true : false ;

        }

        if ( is_business() ) {
            echo \'business-service\'; 
        } 

    }


}
}

1 个回复
最合适的回答,由SO网友:nmr 整理而成

功能“工作”一次,因为before 的第一次调用is_service_class(), 作用is_personal 不存在且整个此块已执行

if ( ! function_exists( \'is_personal\' ) ) { 
    // declaration and use of function
}
在的下一次调用中is_service_class() is_personal 声明,并跳过整个块。在条件内if ( !function_exists( \'is_personal\' ) ) 只保留声明:

if ( !function_exists( \'is_personal\' ) ) { 

    function is_personal() {
        return ( is_post_type_archive(\'pk-personal\') || is_singular( \'pk-personal\' ) || is_page( array( 6814, \'personal-family\', \'Personal & Family Services\' ) ) ) ? true : false ;
    }
}
if ( is_personal() ) {
    echo \'personal-service\'; 
} 
与之类似的是is_business().

我建议使用以下表格:

if ( !function_exists( \'is_service_class\' ) ) {

    function is_service_class () {

        if ( is_personal() ) {
            echo \'personal-service\'; 
        } 
        if ( is_business() ) {
            echo \'business-service\'; 
        } 
    }
}

if ( !function_exists( \'is_personal\' ) ) { 

    function is_personal() {
        return ( is_post_type_archive(\'pk-personal\') || is_singular( \'pk-personal\' ) 
            || is_page( array( 6814, \'personal-family\', \'Personal & Family Services\' ) ) ) ? true : false ;
    }
}
if ( !function_exists( \'is_business\' ) ) {

    function is_business() {
        return ( is_post_type_archive(\'pk-business\')  || is_singular( \'pk-business\' ) 
            || is_page( array( 6821, \'business-services\', \'Business Services\' ) ) ) ? true : false ;
    }
}

结束