• 解決済 momo-sophia

    (@momo-sophia)


    自分が理解できていないので、説明しづらいのですが。

    index.phpにて

    <?php echo get_option($name.'text','空です'); ?>

    で出力している内容を、footer.phpでも表示したいのですが、「空です」表示になってしまいます。
    ‘text’の内容は、外観の設定で設定できる内容です。
    データベース(wp_options)には、正しく登録されているように見えます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター gatespace

    (@gatespace)

    変数のスコープの問題じゃないですかね。

    未検証ですが、
    footer.php で <?php global $name; ?> とかするとどうなります?
    ただ、グローバル変数として $name を呼び出しちゃうので、
    index.phpでも $mytheme_option_name みたいにしておいた方が無難かと思いますが。

    トピック投稿者 momo-sophia

    (@momo-sophia)

    <?php global $name; ?>
    を記述したら、表示されるようになりました。

    でもこの変数、header.phpで宣言されて、index.phpではいきなり使用されているのですが??
    変数のスコープってどう確認できますか?

    モデレーター gatespace

    (@gatespace)

    変数のスコープ自体はPHPの話になります。
    http://php.net/manual/ja/language.variables.scope.php

    header.php は index.phpでは get_header() で呼ばれています。
    ちょうど 先のリンクの「global キーワード」の例示スクリプトと同じ状態です。
    ですので、index.php で $name が参照できた訳です。
    でも、footer.phpは get_footer()という関数を経由しているので、
    footer.php では変数をグローバル宣言してあげないといけません。

    変数の中身を確認するなら PHP の var_dump() 等の関数を使ってください。

    なお、WordPressにははじめから定義されているグローバル変数もあるので、
    それにかぶらないような名前をつけるのも大事ですよ。
    http://codex.wordpress.org/Global_Variables

    トピック投稿者 momo-sophia

    (@momo-sophia)

    なるほど!
    すごくよく分かりました。
    ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「get_optionの使い方」には新たに返信することはできません。