サポート » プラグイン » プラグインの “if (!function_exists(‘some’)) {function some() {…}} ” という書き方につ

  • 解決済 djcomkato

    (@djcomkato)


    Yak for WordPress と格闘中です。

    ボタンとかの表示方法を変更しようと色々調べているうちに、プラグイン本体の以下の表記にたどり着きました。

    if (!function_exists('yak_buy')) {
        function yak_buy($echo = true) {
         ~~~省略~~~
        }
    }

    「functions.phpとかで同名のfunctionを作っちゃえば、overrideしたことになる」と思って試したのですが、見事に画面が真っ白になりました (–;
    上記は「Aというfunctionが無かったらAを作成する」という意味だと思ったのですが、勘違いでしょうか?

    このようなコーディングの理由や活用法について教えてください。
    よろしくお願いいたします。

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

    (@lilyfan)

    「functions.phpとかで同名のfunctionを作っちゃえば、overrideしたことになる」と思って試したのですが、見事に画面が真っ白になりました (–;

    テーマの functions.php の実行はプラグインの読み込みより後なので、その目論みは無理です。テーマの functions.php 側で「二重定義」となってエラーになったわけです。

    したがって、yak_buy() 関数を override する場合は、override するプラグインを作って、Yak for WordPress より先に読み込ませる必要があります (プラグイン名の頭文字が A-Z であればよい)。

    トピック投稿者 djcomkato

    (@djcomkato)

    lilyfanさん、ご回答ありがとうございます

    なるほど、「プラグイン(アルファベット順)」→「functions.php」という順だったんですね。

    記号も使えそうだったので +YAK for WordPress という具合に「+プラグイン名」で追加してみたら、うまく差し替わってくれました。
    (行頭が記号で始まるので、見た目で分類しやすいし、確実に上位に出てくるし)

    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「プラグインの “if (!function_exists(‘some’)) {function some() {…}} ” という書き方につ」には新たに返信することはできません。