3

最初にhttps://carbonfields.net/zip/latest/をダウンロードし、WP バックエンドにプラグインをインストールしました。こちらも有効化しました。

このテスト ケースでは、「Twenty Sixteen」テンプレートを使用し、他のプラグインをインストールせずに、WordPress を新しくインストールし、Carbon Fields のドキュメント ページに従って、functions.php ファイルの先頭に次のコードを追加しました。

<?php // PHP 7
use Carbon_Fields\Container;
use Carbon_Fields\Field;

add_action( 'carbon_fields_register_fields', 'crb_attach_theme_options' );
function crb_attach_theme_options() {
    Container::make( 'theme_options', 'Theme Options' )
        -> set_page_menu_position( 0 )
        -> add_fields( array(
            Field::make( 'text', 'crb_text')
        ) );
}

「テーマオプション」がWPバックエンドに期待どおりに表示されるため、これまでのところすべて問題ないようです。

スクリーンショット Carbon Fields は WP バックエンドで動作します

crb_textここで、次のようにフィールド値を取得しようとします。

// this snippet starts exactly where the previous one ended
add_action( 'after_setup_theme', 'crb_load' );
function crb_load() {
    // require_once( ABSPATH . '/vendor/autoload.php' ); original from website throws: "Failed opening required" so modified to:
    require_once( ABSPATH . 'wp-content/plugins/carbon-fields/vendor/autoload.php' );
    \Carbon_Fields\Carbon_Fields::boot();
    var_dump( carbon_get_theme_option( 'crb_text' ) ); // -> string(0) ""
    var_dump( carbon_get_theme_option( '_crb_text' ) ); // -> string(0) "" isn't actually the right way to do it but give it a try for testing purpose
    var_dump( get_option( '_crb_text' ) ); // -> string(4) "test"
}

get_option( '_crb_text' )ご覧のとおり、ネイティブ WP の方法であるを呼び出してデータを取得できますが、プラグイン機能は機能carbon_get_theme_option( 'crb_text' )しません。実際には、これは「単純なフィールド」には問題ありませんが、プラグイン自体の関数によって取得する必要がある「複雑なフィールド」がありcarbon_get_theme_option()、この場合です。

この質問も見ました: use Carbon Fields in custom plugin class . しかし、この質問は私の始まりで終わります。

前もって感謝します...


PS: 私は Carbon Fields 1.6 で作業するのに慣れていますが、これは非常によく似たセットアップで問題なく動作しますが、ブランチ 2 にアップグレードしたいと考えています。


再び私の環境: define('WP_DEBUG', true);、Carbon Fields 2.1.0、WordPress 4.8.2–de_DE (Carbon Fields 以外のプラグインなしの新規インストール)、Twenty Sixteen 1.3、PHP 7

4

1 に答える 1