web-dev-qa-db-fra.com

Pourquoi `add_meta_box` ne fonctionne-t-il pas?

J'essaie d'ajouter des champs méta à un produit WPSC en utilisant le code suivant:

/**
 * data callback
 */
function abc_callback($object, $box)
{
    echo 'callback executed!';
}

/**
 * add custom fields
 */
function abc_load_post($post_id)
{
    add_meta_box('abc_post_id', 'abc', 'abc_callback', 'post', 'normal', 'default', array());
}
add_action('load-post.php', 'abc_load_post', 10, 2);
add_action('load-post-new.php', 'abc_load_post', 10, 2);

La fonction abc_load_post est appelée correctement mais rien n’apparaît réellement sur la page d’édition du produit (à savoir /wp-admin/post.php).

Quelqu'un peut-il expliquer ce que je fais mal?

2
Matthew

Je peux voir 2 problèmes avec votre code. Vous semblez vouloir que cette méta-boîte apparaisse sur les pages du produit, mais vous l'ajoutez réellement au type de publication et non au type de publication du produit. L'autre problème est le crochet auquel vous attachez votre fonction. Essaye ça:

add_action( 'add_meta_boxes_{post_type}', 'abc_load_post' );

Remplacez {post_type} par le type de message que vous souhaitez réellement cibler, par exemple. produit, poste ou page. Le quatrième argument de add_meta_box () est le type de publication, btw, que vous avez défini sur "post".

5
shabushabu

Utilisez l'action 'add_meta_boxes' pour ajouter une méta-boîte. Voir mon démo plugin Basic Meta Box pour un exemple.

1
fuxia