WordPress Snippet: add_meta_box()

To add custom content to the "Write" admin pages (where you write posts, pages or links), WordPress 2.5 introduces a new function set: add_meta_box()

add_meta_box

Simple plugin example :

  1. <?php
  2. /*
  3. Plugin Name: Example: Add Meta Box
  4. Plugin URI: #
  5. Description: Simple example showing how to add a "meta box" in WP 2.5
  6. Version: 0.0
  7. Author: Ozh
  8. Author URI: http://planetozh.com/blog/
  9. */
  10.  
  11. // This function tells WP to add a new "meta box"
  12. function add_some_box() {
  13.     add_meta_box(
  14.         'ozh', // id of the <div> we'll add
  15.         'My Box', //title
  16.         'add_something_in_the_box', // callback function that will echo the box content
  17.         'post' // where to add the box: on "post", "page", or "link" page
  18.     );
  19. }
  20.  
  21. // This function echoes the content of our meta box
  22. function add_something_in_the_box() {
  23.     echo "I'm living in a box";
  24. }
  25.  
  26. // Hook things in, late enough so that add_meta_box() is defined
  27. if (is_admin())
  28.     add_action('admin_menu', 'add_some_box');
  29.  
  30. ?>

The catch here is to hook the function that add our "meta box" (here: add_some_box()) late enough so that the function it needs, add_meta_box(), has been defined. Hooking on 'admin_menu' is fine.

If you want something compatible with both WordPress 2.3 and 2.5, you will need something like the following:

  1. if (function_exists('add_meta_box') {
  2.     // 2.5 style
  3. } else {
  4.     // 2.3
  5. }

17 comments

  1. yms

    Nice, thanks for that info. I can't find an argument to change the order of the boxes around? Is that not possible?

  2. Ozh

    yms » I also wanted to tweak that, but it seems there is no argument to pass in order to achieve this

  3. Frank Malina

    I was waiting for this feature for ages, thank you

  4. Jacob

    Nice snippet. But now I have a "what next" question.

    Suppose I create a meta box that has some form elements in it to collect meta data. When the user saves the post, I want to be able to process and save the meta data.

    How do I write a plugin to access that POSTed data?

  5. Ozh

    Jacob » Learn how to write complex plugins starting with information you'll find in the Codex, and by reading plugin sources. Definitely not something that belongs to a comment reply.

  6. Adding Advanced Options Boxes in WordPress 2.5 · Pressed Words

    […] and "Write Page" pages will need to change their methods to work with the new design. Ozh explains how to use add_meta_box() with the new design to add those custom fields. He has a simple, straightforward example plugin. Posted in Plugins | Tagged admin menu, Version […]

  7. Il Filosofo » Adding Advanced Options Boxes in WordPress 2.5

    […] and "Write Page" pages will need to change their methods to work with the new design. Ozh explains how to use add_meta_box() with the new design to add those custom fields. He has a simple, straightforward example plugin. Filed under Pressed Words, WordPress. Bookmark […]

  8. Thomas-DK

    Hi,

    Thank you for this tutorial.
    What if I want to replace an existing meta box.
    Lets say I made a plugin witch extends page templates.
    So I have made an Page templates extended meta box, but now I want to hide the default Page template meta box.

    Is this possible?

  9. Ozh

    Thomas-DK » CSS (or javascript) are the easiest ways

  10. Ping

    Hi,

    I installed your plugin and looks good. Thanks! However, I keep getting "tinyMCE not defined" error (in firebug) when I try to switch to visual editor. Once I un-installed the plugin, the error was gone. I made a similar plugin before and also have the same problem. Do you know why?

    Thanks!

  11. Ozh

    Ping » No idea. This code has nothing to do with the editor.

  12. Giovanni

    Hi and thanks for the great reading.

    Could answer me, if is there any link or tutorial to insert these meta box's, in a plugin page ?

    In my case, I'm writing a domain manager to control a few domains I have, and I want to add these meta box's on the 'Add a Domain' page.

    Kind Regards!

  13. ben

    Next step is how to save a data field :)

  14. anilmakhijani.com » Adding Meta Information to a Blogroll

    […] I found a useful blog post on how to add text fields to the "link management" admin menu in WordPress:  http://planetozh.com/blog/2008/02/wordpress-snippet-add_meta_box/ […]

  15. Usando Wordpress Hooks – Ganchos | Tutorial Wordpress

    […] documentação do WordPress dá pra saber que a (nova) função para criar caixas de opções é a add_meta_box. E se add adiciona, remove exclui e te pergunta três parâmetros. […]

  16. Roger

    Giovanni,

    Veja se isso ajuda:
    Maybe this can help:

    http://www.code-styling.de/english/how-to-use-wordpress-metaboxes-at-own-plugins

    Câmbio?
    Over?

  17. WordPress snippet: add_meta_box() per aggiungere contenuto personalizzato nelle pagine di amministrazione — Studio404 Web Agency

    […] breve tutorial con un pezzo di codice per aggiungere tramite plugin del contenuto personalizzato nella pagina di […]

Comments are closed.