web-dev-qa-db-fra.com

Pré-remplissez les champs avec du contenu provenant de l'extérieur lors de la création d'un nouveau poste

Je voudrais trouver un moyen de remplir certains des champs de la page /wp-admin/post-new.php à partir d'une source externe.

Cela fonctionne pour le titre: loading /wp-admin/post-new.php?post_title=title1 remplit la saisie de titre avec title1.

Vous avez l’idée, ce qui serait génial est quelque chose comme /wp-admin/post-new.php?post_title=title1&content=content1&tags=tag1,tag2&cat=cat1,cat2... afin que lorsque j’arrive sur le post-new.php avec la plupart des champs déjà remplis à partir d’un script externe.

J'aurais aussi besoin de remplir des champs personnalisés.

Comment puis je faire ça? Quelle est la meilleure option? Un script externe complet qui se connecte à la base moi-même et exécute des requêtes d'insertion? Un plugin? Si oui, avez-vous des suggestions?

2
user2976

Un article vide est créé par get_default_post_to_edit() . Cette fonction lit les valeurs post_title, content et excerpt dans le tableau $_REQUEST et les filtre également à travers default_title, default_content et default_excerpt.

Par défaut, cette fonction renvoie uniquement un "faux" objet $post, mais si le paramètre $create_in_db est défini sur true, il est réellement enregistré dans la base de données avec post_status défini sur auto-draft.

Ce paramètre est défini dans post-new.php , ce qui signifie que vous pouvez vous connecter à wp_insert_post et enregistrer des éléments supplémentaires, tels que des balises, à partir du tableau $_REQUEST ou d'une source externe. Un exemple très simple:

add_action( 'load-post-new.php', 'wpse8650_post_new' );
function wpse8650_post_new()
{
    add_action( 'wp_insert_post', 'wpse8650_wp_insert_post_default' );
}

function wpse8650_wp_insert_post_default( $post_id )
{
    add_post_meta( $post_id, 'wpse8650_meta_key', $_REQUEST['meta_value'] );
    wp_set_post_tags( $post_id, $_REQUEST['tags']) );
}

Cela fonctionne car les champs personnalisés et les balises de publication sont lus à nouveau à partir de la base de données (ou du cache) lors de la construction de la page, et nous le faisons avant l'affichage de ces métaboxes.

10
Jan Fabry

S'il s'agit d'ajouter des utilisateurs finaux, le plus simple est peut-être de créer un script jQuery pour attribuer les valeurs. Voici comment analyser l'URL:

Et voici comment ajouter du Javascript dans WordPress:

Enfin, il suffit de visualiser la source dans l’écran de modification WordPress pour voir les noms des champs de saisie, puis la procédure ci-dessous montre comment utiliser jQuery pour attribuer des valeurs:

3
MikeSchinkel

En plus de la réponse de Mike, vous pouvez également utiliser le serveur XML-RPC de WordPress pour effectuer des publications externes. Cela dépend de ce que vous essayez de faire.

0
Zack