web-dev-qa-db-ja.com

プラグイン "Meta Box":カスタム投稿タイプでのメタボックスの実装

私はWP初心者で、 "Meta Box"プラグインの可能性を見ています( http://wordpress.org/plugins/meta-box/ )。私はすでにプラグインを有効にしています。これまでのところ、demo.phpをアップロードし、ブログ投稿ウィンドウにさまざまなメタボックスを表示することに成功しました。

私はすでにドキュメンテーションを読んでいますが、それでも私は私のカスタム投稿タイプのためにメタボックスを登録する方法を知りません。どうやってそれらを実装するのですか?

私のカスタム投稿タイプのコード(アーティストのリストを掲載するコード)は、これまでのところ次のようになっています。

add_action('init', 'add_cpt_artists');
function add_cpt_artists() {
$labels = array(
      'name' => _x('Artists', 'post type general name'),
      'singular_name' => _x('Artist', 'post type singular name'),
      'add_new' => _x('Add', 'artist'),
      'add_new_item' => __('Add new artist'),
      'edit_item' => __('Edit artist'),
      'new_item' => __('New artist'),
      'view_item' => __('View artist'),
      'search_items' => __('Search for artist'),
      'not_found' =>  __('No artist found'),
      'not_found_in_trash' => 
      __('No artist in trash'),
      'parent_item_colon' => ''
   );
$supports = array('title', 'editor', 'thumbnail', 'excerpt');
$args = array(
      'labels' => $labels,
      'public' => true,
      'publicly_queryable' => true,
      'show_ui' => true, 
      '_builtin' => false,
      'show_in_menu' => true, 
      'query_var' => true,
      'rewrite' => array("slug" => "artists"),
      'capability_type' => 'post',
      'hierarchical' => false,
      'has_archive' => true, 
      'hierarchical' => false,
      'menu_position' => 10,
      'supports' => $supports
   );
register_post_type('artists',$args);
}

Meta Boxプラグインから、2つのテキスト領域とチェックボックス付きのボックスを追加したいとしましょう。

  • どこにコードを挿入しますか?
  • コードはどのようになりますか?
  • ページテンプレートのコンテンツを取得する方法
1
Kent Miller

この場合、特定のメタボックスのフックを見つけて、カスタム投稿タイプをpages配列に追加する必要があります。次に例を示します。

$meta_boxes['test_metabox'] = array(
    'id' => 'test_metabox',
    'title' => 'Test Metabox',
    'pages' => array('post','page','artists'), //list custom post types here!
    'context' => 'normal',
    'priority' => 'high',

Meta Boxプラグインは基本的にメタボックスのコーディングを容易にするクラスを追加します。あなたはまだ実際にあなたのテーマのファイルに実際にメタボックス自身を登録してコード化する必要があります(下記の例を参照)。カスタム投稿タイプでのみ表示するには、pages配列を変更する必要があります(上記のように'artists'をその配列に追加する)。

コード例(未テスト)

プラグインをインストールしてアクティブ化したと仮定すると、テーマのfunctions.phpファイルに次のコードを貼り付けることで、テキスト領域とチェックボックスメタボックスを追加できるはずです。

add_filter( 'rwmb_meta_boxes', 't129292_register_meta_boxes' );

function t129292_register_meta_boxes( $meta_boxes ) {

$prefix = 'rw_';
// Register the metabox
$meta_boxes[] = array(
    'id'       => 'personal',
    'title'    => 'Personal Information',
    'pages'    => array( 'artists' ), //displays on artists post type only
    'context'  => 'normal',
    'priority' => 'high',
    'fields' => array(

        // add a text area
        array(
            'name'  => 'Text Area',
            'desc'  => 'Description',
            'id'    => $prefix . 'text1',
            'type'  => 'textarea',
            'cols' => 20,
            'rows' => 3,                
        ),
        // add another text area
        array(
            'name'  => 'Text Area',
            'desc'  => 'Description',
            'id'    => $prefix . 'text2',
            'type'  => 'textarea',
            'cols' => 20,
            'rows' => 3             
        ),
        // CHECKBOX
        array(
            'name' => __( 'Checkbox', 'rwmb' ),
            'id'   => $prefix . 'checkbox',
            'type' => 'checkbox',
            // Value can be 0 or 1
            'std'  => 1,
        )
    )
);

return $meta_boxes;

}

それから、テーマファイルのフロントエンドにオプションを表示するために、ヘルパー関数を使うことができます。

echo rwmb_meta( 'rw_text1' ); //echo the contents from the first textarea
echo rwmb_meta( 'rw_text2' ); //echo the contents from the second textarea
echo rwmb_meta( 'rw_checkbox' ); //echo 1 or 0 if the checkbox is checked

これらの例はプラグインの Githubレポジトリ から変更されています。デモファイル(リンク)には、テキストエリアやチェックボックスだけでなく、さまざまなメタボックスタイプの使用に関するコードが含まれます。

1
MBL

このチュートリアル は役に立つかもしれません。

その後、 get_post_meta() を使用してテーマのデータを取得できます。

0
Max