1

我的代码只执行 if 语句,但不继续执行 else 部分。我已经单独尝试了每个语句,它们工作正常。但是,当我把它们放在一起时,只执行第一条语句。我究竟做错了什么?

我试过这个:

function body_google_webfonts() {
    if( $settings['font_type_body'] = "Handlee") :
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee');
        wp_enqueue_style( 'body-google-webfonts');
    elseif ( $settings['font_type_body'] = "Kreon") :
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon');
        wp_enqueue_style( 'body-google-webfonts');
    endif;
}

还有这个:

function body_google_webfonts() {
    if( $settings['font_type_body'] = "Handlee") :
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee');
        wp_enqueue_style( 'body-google-webfonts');
    endif;
    if ( $settings['font_type_body'] = "Kreon") :
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon');
        wp_enqueue_style( 'body-google-webfonts');
    endif;
}

还有这个:

function body_google_webfonts() {
    if( $settings['font_type_body'] = "Handlee") {
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee');
        wp_enqueue_style( 'body-google-webfonts');
    }
    if ( $settings['font_type_body'] = "Kreon") {
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon');
        wp_enqueue_style( 'body-google-webfonts');
    }
}

我试过这个:

function body_google_webfonts() {
    if( $settings['font_type_body'] = "Handlee") {
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee');
        wp_enqueue_style( 'body-google-webfonts');
  } else if ( $settings['font_type_body'] = "Kreon") {
        wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon');
        wp_enqueue_style( 'body-google-webfonts');
  }
}
4

2 回答 2

4

您将值分配给变量而不是进行比较。这将始终导致陈述为真。

if( $settings['font_type_body'] = "Handlee") :

应该

if( $settings['font_type_body'] == "Handlee") :

或者

if( $settings['font_type_body'] === "Handlee") :
于 2013-02-01T18:12:38.147 回答
0

我认为您的问题是:您不是在比较两件事,而是使变量设置等于“Handlee”。此操作将始终返回 true,因此只会执行第一个 if。

要解决这个问题,请使用正确的句子:

$settings['font_type_body'] == "Handlee"

带双“=”。

@Jessica,一个非常好的编程实践,为了避免这个简单的错误,总是把你的变量放在比较的右侧。像这样的东西:

int a = 0; 
if 0 == a 

您可以将其用于其他语言。这是很好的理由,如果你尝试这样做

If 0 = a

在调试模式下很容易找到您的问题。

于 2013-02-01T18:15:04.743 回答