最初に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バックエンドに期待どおりに表示されるため、これまでのところすべて問題ないようです。
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