web-dev-qa-db-fra.com

Comment ajouter une boîte de dialogue dans l'API du plugin "Edit Post"?

Cela peut sembler simple, mais je ne pouvais pas le faire dans la documentation WP. Mon plugin utilise actuellement des champs personnalisés pour des choses pour lesquelles je pourrais simplement avoir des boutons radio/cases à cocher pour chaque message. Comment puis-je ajouter une petite section où je peux avoir de telles options plutôt que des champs personnalisés?

3
Jon Phenow

Vous trouverez ci-dessous un exemple de cases à cocher permettant de définir des valeurs de champ personnalisées:

// 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 );
}

Les fonctions et les points d'ancrage suivants sont requis pour l'ajout d'une boîte méta. Pour plus d'informations, reportez-vous aux références ci-dessous:

Crochets

  1. admin_init (action)
  2. save_post (action)
  3. add_meta_boxes (action) (vous n'avez pas besoin de admin_init dans WordPress 3.0+)

Les fonctions

  1. add_meta_box
  2. wp_verify_nonce
4
Hameedullah Khan

Ceci est un appel dans le monde WordPress à une MetaBox pour laquelle vous devez utiliser add_meta_box () function pour ajouter le vôtre.

il existe un excellent tutoriel et une classe PHP que vous pouvez utiliser dans votre plugin à deluxeblogtips.com Je vous suggérerais de l'utiliser comme point de départ, ce qui vous facilitera la vie.

1
Bainternet