サポート » テーマ » functions.phpの修正

  • Z.com byGMO

    (@takeaki-nagashima)


    テーマ作成初心者です。先日.ORGにテーマをアップしたところ、下記のような回答をいただいてしまいました。

    functions.php: Move the following items and include them in the function kotenhanagara_setup() hooked to the after_setup_theme
    add_theme_support(‘custom-background’);
    add_theme_support( ‘custom-header’ );

    functions.phpを再度確認したのですが、どうすればよいのか、またなぜ今の形がいけないのかが分かりません。

    どなたか、ご指導のほど、よろしくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • Fumito MIZUNO

    (@php-web)

    英語の回答の意味する所は、おそらく

    function kotenhanagara_setup(
        (省略)
    add_theme_support('custom-background');
    add_theme_support( 'custom-header' );
    }

    と変更してくれ、ということですね。

    公式テーマでこうしなければならない理由は、私も把握していないです。

    nobita

    (@nobita)

    こんにちは

    テーマのフックは、after_setup_theme を使うようにというルールがあります。

    さらに、以下のadd_theme_supportは、functions.phpから呼んでくれと言う、お勧めがあります
    http://make.wordpress.org/themes/guidelines/guidelines-recommended/

    Post Thumbnails:
    the_post_thumbnail()
    add_theme_support(‘post-thumbnails’) in functions.php
    Custom Headers:
    add_theme_support(‘custom-header’) in functions.php
    Custom Backgrounds:
    add_theme_support(‘custom-background’) in functions.php

    一般的には、テーマのフックは、functions.phpに書くと思いますので、まとめて

    add_action( 'after_setup_theme', 'prefix_theme_setup' );
    
    if ( ! function_exists( 'prefix_theme_setup' ) ){//ifで、プラグアブルにするかどうかは、ご自身の判断で
     function prefix_theme_setup(){
        add_theme_support('custom-background');
        add_theme_support( 'custom-header' );
      }
    }

    という風に書いてくれという事になっていると思います。

    http://codex.wordpress.org/Function_Reference/add_theme_support

    Allows a theme or plugin to register support of a certain theme feature. If called from a theme, it should be done in the theme’s functions.php file to work. It can also be called from a plugin if attached to an action hook.

    他の、ファイルで、after_setup_themeをつかって、add_theme_supportしても、動作に問題はないと思いますが、functions.phpに置く理由は、他のプラグインなどからフックされる場合の動作に関係するものと思います。

    公式テーマのレビュールールは、ちょっとわかりにくいですが、プラグインからのフックなどが確実に動作するといった連携の問題からルール化されているという視点で、考えてみると理解が早まるかもしれないです。

    functions.phpでadd_theme_supportを書く場合必ずafter_setup_themeを使って書かなければならないという事はなさそうなので、動作に支障が出る場合などは、after_setup_themeを使って書かなくても大丈夫ではないかと思います。

    このルールは、たぶん今年になってからのものだったと思います。

    余談
    レビューインセンティブ制度が導入されて、レビュアーは、not-approvedを簡単に出さずに、合格まで付き合う傾向が、顕著です。
    いま、一番いい時ですよ、がんばってください

    トピック投稿者 Z.com byGMO

    (@takeaki-nagashima)

    Fumito MIZUNOさん、
    早速のご解答ありがとうございましたmm
    助かります。

    トピック投稿者 Z.com byGMO

    (@takeaki-nagashima)

    nobitaさん、
    大変ご丁寧にありがとうございます!
    ぜひ参考にさせていただきます。

    nobita

    (@nobita)

    余計なお世話ですが、

    テーマを確認しないで、書いてしまっていたので、いまさらって内容になっていてごめんなさい

    いま kimono テーマをちら見したので、気になるところ書いておきます。

    if ( function_exists( 'wp_get_theme' ) ) {
    		add_theme_support( 'custom-background', $args );
    	} else {
    		define( 'BACKGROUND_COLOR', $args['default-color'] );
    		if ( ! empty( $args['default-image'] ) )
    			define( 'BACKGROUND_IMAGE', $args['default-image'] );
    		add_theme_support( 'custom-background', $args );
    	}

    のところで、3.4以下のバージョンとの後方互換とっているようですが、ここが問題なのではないかと思います。

    新作テーマは、最新のバージョン対応が求められ、後方互換の対応が許可されるのは、一度公式テーマになってから、その後のコアの変更に対して許可されていたと思いますので、ガイドラインを読み直してみてください。

    else 以降は削除したほうがいいんじゃないかと思います。

    add_action('widgets_init', create_function('', 'return register_widget("kimono_MyWidgetItem");'));

    create_functionも、引っかかる感じがします。
    関数を書いたほうがいいです。
    ( create_functionは、使うなという事で、修正を求められた事がありました )
    http://themes.trac.wordpress.org/ticket/8945

    kimono_custom_header_setup()
    add_theme_support( 'custom-header',...)

    等も、functions.php+後方互換の削除

    set_transientは、OKみたいですが、以下を参考に
    http://themes.trac.wordpress.org/ticket/6928

    トピック投稿者 Z.com byGMO

    (@takeaki-nagashima)

    nobitaさん、

    テーマまでご確認いただきありがとうございます!!
    上記の件、確認いたします。
    本当に勉強になります、ありがとうございましたmm

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「functions.phpの修正」には新たに返信することはできません。