web-dev-qa-db-fra.com

add_meta_box Rappel non appelé

J'ai créé mon premier plugin la semaine dernière qui crée un type de publication personnalisé. Comme cela fonctionnait, je copiais le code que j'avais déjà et le modifiais pour qu'il soit de type post différent. Pour une raison quelconque, le rappel que j'ai défini pour add_meta_box n'est pas appelé. Quelqu'un peut-il me dire pourquoi, alors que je l'ai examiné à plusieurs reprises sans succès, de la sorte.

/**
 * Adds a meta box to the post editing screen
/***************************************************************************/
function package_custom_meta()
{
    add_meta_box( 'package_meta', __( 'Package Title', 'package_textdomain' ), 'package_meta_callback', 'package' , 'high' );

    echo "package_custom_meta CALLED";
}

add_action( 'add_meta_boxes', 'package_custom_meta' );

/**
 * Outputs the content of the meta box
/***************************************************************************/
function package_meta_callback( $post )
{
    echo "package_meta_callback CALLED";

    wp_nonce_field( basename( __FILE__ ), 'package_nonce' );
    $package_stored_meta = get_post_meta( $post->ID );
    ?>

    <p>
        <label for="meta-package-512mb" class="package-row-title"><?php _e( '512MB RAM', 'package_textdomain' )?></label>
        <input type="text" name="meta-package-512mb" id="meta-package-512mb" value="<?php if ( isset ( $package_stored_meta['meta-package-512mb'] ) ) echo $package_stored_meta['meta-package-512mb'][0]; ?>" />
    </p>

    <p>
        <label for="meta-package-1gb" class="package-row-title"><?php _e( '1GB RAM', 'package_textdomain' )?></label>
        <input type="text" name="meta-package-1gb" id="meta-package-1gb" value="<?php if ( isset ( $package_stored_meta['meta-package-1gb'] ) ) echo $package_stored_meta['meta-package-1gb'][0]; ?>" />
    </p>

    <?php
}
2
Aidan Knight

On dirait que nous avons tous les deux raté l'erreur parce que je ne l'ai pas vue au début non plus.

Dans votre appel à add_meta_box, vous avez sauté l'argument du contexte et êtes passé directement à la priorité. "high" n'est pas une chaîne disponible pour l'argument context, et cela entraîne apparemment l'échec de la fonction.

Ajouter dans la chaîne pour le contexte le corrige:

add_meta_box( 'package_meta', __( 'Package Title', 'package_textdomain' ), 'package_meta_callback', 'package', 'normal', 'high' );

2
Matt Keys

Pour moi, chaîne vide car screen param travaillait

add_meta_box(
        'tribe_events_event_details',
        'Post Events Calendar',
        'bw_events_chooser_box',
        '', // screen
        'normal',
        'high'
    );
1
michalzuber