web-dev-qa-db-ja.com

"投稿編集"プラグインAPIにオプションボックスを追加するにはどうすればいいですか?

これはちょっと単純なことかもしれませんが、WPのドキュメントではその方法が見つかりませんでした。私のプラグインは現在、各投稿にラジオボタンやチェックボックスを含めることができるものにカスタムフィールドを使用しています。カスタムフィールドではなくそのようなオプションを設定できるセクションを追加するにはどうすればよいですか。

3
Jon Phenow

以下は、カスタムフィールド値を設定するためのいくつかのチェックボックスの例です。

// register the meta box
add_action( 'add_meta_boxes', 'my_custom_field_checkboxes' );
function my_custom_field_checkboxes() {
    add_meta_box(
        'my_meta_box_id',          // this is HTML id of the box on edit screen
        'My Plugin Checkboxes',    // title of the box
        'my_customfield_box_content',   // function to be called to display the checkboxes, see the function below
        'post',        // on which edit screen the box should appear
        'normal',      // part of page where the box should appear
        'default'      // priority of the box
    );
}

// display the metabox
function my_customfield_box_content() {
    // nonce field for security check, you can have the same
    // nonce field for all your meta boxes of same plugin
    wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_nonce' );

    echo '<input type="checkbox" name="my_plugin_paid_content" value="1" /> Paid Content <br />';
    echo '<input type="checkbox" name="my_plugin_network_wide" value="1" /> Network wide';
}

// save data from checkboxes
add_action( 'save_post', 'my_custom_field_data' );
function my_custom_field_data($post_id) {

    // check if this isn't an auto save
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;

    // security check
    if ( !wp_verify_nonce( $_POST['mypluing_nonce'], plugin_basename( __FILE__ ) ) )
        return;

    // further checks if you like, 
    // for example particular user, role or maybe post type in case of custom post types

    // now store data in custom fields based on checkboxes selected
    if ( isset( $_POST['my_plugin_paid_content'] ) )
        update_post_meta( $post_id, 'my_plugin_paid_content', 1 );
    else
        update_post_meta( $post_id, 'my_plugin_paid_content', 0 );

    if ( isset( $_POST['my_plugin_network_wide'] ) )
        update_post_meta( $post_id, 'my_plugin_network_wide', 1 );
    else
        update_post_meta( $post_id, 'my_plugin_network_wide', 0 );
}

メタボックスを追加するには、以下のフックと関数が必要です。それらについての詳細は、以下の参考文献を参照してください。

フック

  1. admin_init (アクション)
  2. save_post (アクション)
  3. add_meta_boxes (アクション)(WordPress 3.0以降ではadmin_initは必要ありません)

関数

  1. add_meta_box
  2. wp_verify_nonce
4

これはWordPressの世界ではあなたが自分自身を追加するために add_meta_box() 関数を使う必要があるMetaBoxと呼ばれています。

素晴らしいチュートリアルとあなたのプラグインで使うことができるPHPクラスが deluxeblogtips.com 私はあなたがあなたの人生を楽にする出発点のためにそれを使うことを勧めます。

1
Bainternet