web-dev-qa-db-fra.com

Création d'un widget d'administration pour /wp-admin/post.php?

Bonjour et merci de nous aider à l'avance,

J'essaie de créer un widget qui réside dans la page post.php lors de l'édition d'un article existant (pas new-post.php, j'ai besoin d'un identifiant). Ce widget personnalisé va récupérer l'ID des articles et le transférer dans une autre base de données pour le stocker. Il le fera via ajax et aura son propre bouton de sauvegarde indépendant.

Assez simple non? Sauf que je n'arrive pas à comprendre comment afficher mon widget sur la page post.php.

Voici mon code de test dans themes/myTheme/functions.php, juste pour essayer de le mettre au bon endroit ... mais cela ne fonctionne pas.

function artist_associator_dashboard_widget_function(){
    echo "Hello world";
}

function artist_associator_add_dashboard_widget(){
    wp_add_dashboard_widget('artist_associator_dashboard_widget', 'Artist Associator', 'artist_associator_dashboard_widget_function');
}
add_action('wp_dashboard_setup','artist_associator_add_dashboard_widget');

J'ai également essayé de mettre en place quelques autres actions qui semblaient prometteuses, mais cela ne fonctionnait pas et je ne pouvais pas trouver mes fonctions.

2
user2645

D'une part, les widgets de tableau de bord (ce que vous utilisez dans l'exemple) sont destinés à la page d'administration principale de wordpress.

Je pense que ce que vous voulez, c'est ce tutoriel . Vous souhaitez également consulter add_meta_box pour savoir comment ajouter un metabox à votre écran de publication. Voici un code de mon projet actuel qui devrait vous aider à ajouter un metabox à l'écran de post-édition.

$m_visitor_info = array(
        'id' => 'argus_edit_visitor',
        'name' => 'Visitor Information',
        'cb' => array( &$this, '_argus_edit_visitor' ),
        'type' => 'visitor',
        'context' => 'normal',
        'priority' => 'high',
    );

add_meta_box( $m_visitor_info['id'], $m_visitor_info['name'], $m_visitor_info['cb'], $m_visitor_info['type'], $m_visitor_info['context'], $m_visitor_info['priority'] );

Changez tout selon vos préférences. Fondamentalement, cela me crée une métabox personnalisée qui apparaît comme la sélection d’entrée principale pour le message (je n’utilise pas l’éditeur ni le support de titre). Le contexte peut être "normal", "avancé" ou "côté". Je n'ai pas trouvé d'utilisation pour 'advanced', bien que ce soit par défaut pour une raison quelconque.

Quoi qu'il en soit, vous devrez probablement vérifier si vous modifiez une page existante ou si vous créez une nouvelle publication.

Cependant, une meilleure solution consisterait peut-être à utiliser add_action pour lier l'événement save_post et à utiliser votre ajax pour enregistrer l'ID de publication dans votre base de données externe.

2
Zack