如何在“编辑贴子”插件API中添加选项框?

时间:2011-05-26 作者:Jon Phenow

这可能有点简单,但我在WP文档中找不到这样做的方法。我的插件目前使用自定义字段,我可以为每篇文章设置单选按钮/复选框。我如何添加一个小部分,在那里我可以有这样的选项,而不是自定义字段?

2 个回复
最合适的回答,由SO网友:Hameedullah Khan 整理而成

下面是设置自定义字段值的几个复选框的示例:

// 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[\'myplugin_nonce\'], plugin_basename( __FILE__ ) ) ) // spelling fix
        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 );
}
添加元框需要以下挂钩和函数,有关它们的更多信息,请参阅以下参考:

挂钩admin_init (动作)save_post (动作)add_meta_boxes (操作)(在WordPress 3.0+)中不需要admin\\u initadd_meta_box
  • wp_verify_nonce
  • SO网友:Bainternet

    这是WordPress世界中你需要使用的MetaBoxadd_meta_box() 函数添加您自己的。

    有一个很棒的教程和一个PHP类,您可以在插件中使用deluxeblogtips.com 我建议你把它作为一个起点,让你的生活更轻松。

    结束