it-swarm.com.de

Füllen Sie Felder mit Inhalten von außerhalb aus, wenn Sie einen neuen Beitrag erstellen

Ich möchte eine Möglichkeit finden, einige der Felder auf der Seite /wp-admin/post-new.php aus einer externen Quelle auszufüllen.

Es funktioniert für den Titel: Laden von /wp-admin/post-new.php?post_title=title1 füllt die Titeleingabe mit title1.

Sie bekommen die Idee, was toll wäre, ist so etwas wie /wp-admin/post-new.php?post_title=title1&content=content1&tags=tag1,tag2&cat=cat1,cat2..., so dass, wenn ich auf den post-new.php komme, die meisten Felder bereits von einem externen Skript ausgefüllt sind.

Ich müsste auch benutzerdefinierte Felder ausfüllen.

Wie kann ich das machen? Was ist die beste Option? Ein vollständiges externes Skript, das eine Verbindung zur Basis herstellt und Einfügeabfragen ausführt? Ein Plugin? Wenn ja, haben Sie einige Vorschläge?

2
user2976

Ein leerer Beitrag wird von get_default_post_to_edit() erstellt. Diese Funktion liest die Werte für post_title, content und excerpt im Array $_REQUEST und filtert sie auch nach default_title, default_content und default_excerpt.

Standardmäßig gibt diese Funktion nur ein "falsches" $post-Objekt zurück. Wenn der $create_in_db-Parameter jedoch auf true festgelegt ist, wird er tatsächlich in der Datenbank gespeichert, wobei der post_status auf auto-draft festgelegt ist.

Dieser Parameter wird in post-new.php festgelegt. Dies bedeutet, dass Sie sich in wp_insert_post einbinden und zusätzliche Inhalte wie Tags aus dem $_REQUEST-Array oder aus einer externen Quelle speichern können. Ein sehr einfaches Beispiel:

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']) );
}

Dies funktioniert, weil die benutzerdefinierten Felder und Post-Tags beim Erstellen der Seite erneut aus der Datenbank (oder dem Cache) gelesen werden. Dies geschieht, bevor diese Metaboxen angezeigt werden.

10
Jan Fabry

Wenn Endbenutzer hinzugefügt werden sollen, ist es möglicherweise am einfachsten, ein jQuery-Skript zu erstellen, um die Werte zuzuweisen. So analysieren Sie die URL:

Und so fügen Sie Javascript in WordPress hinzu:

Zeigen Sie die Quelle im WordPress-Bearbeitungsbildschirm an, um die Namen der Eingabefelder anzuzeigen, und zeigen Sie dann, wie Sie mit jQuery Werte zuweisen:

3
MikeSchinkel

Zusätzlich zu Mikes Antwort können Sie auch den XML-RPC-Server von WordPress zum externen Posten verwenden. Es hängt davon ab, was Sie versuchen.

0
Zack