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

あなたの問題は次のとおりだと思います。2つのことを比較しているのではなく、変数の設定を「Handlee」に等しくしているのです。この操作は常に true を返すため、最初の if だけが実行されます。

これを解決するには、正しい文を使用してください。

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

ダブル「=」付き。

この単純なエラーを回避するための非常に優れたプログラミング手法である@Jessicaは、変数を常に比較の右側に配置します。このようなもの:

int a = 0; 
if 0 == a 

他の言語に使用できます。あなたがやろうとするなら、それは正当な理由です

If 0 = a

デバッグ モードで問題を見つけるのは簡単です。

于 2013-02-01T18:15:04.743 に答える