Warum kann ich save_posts nicht nach admin_init einbinden?

Ich versuche, die “save_post” -Aktion von einem AJAX-Callback in meinem Plugin einzubinden, aber es scheint nicht zu funktionieren. Tatsächlich funktioniert das Anhaken in “save_posts” nur von einigen Tastenaktionsausführungspunkten (z. B. “init” oder “admin_init”), aber nicht von anderen (z. B. einem “add_meta_boxes” -callback).

In meinem speziellen Fall möchte ich auf eine Schaltfläche im Bildschirm “Post bearbeiten” klicken, um eine neue benutzerdefinierte Metabox hinzuzufügen und die Daten der Metabox ordnungsgemäß speichern zu lassen. Aber natürlich, als ich auf diesen Knopf klicke und diese Metabox hinzufüge, habe ich schon einmal die “save_post” -Aktion angehakt und WP will mich scheinbar nicht wieder einhaken lassen.

Wenn ich kurz den WP-Quellcode durchführe, sehe ich keine offensichtlichen Gründe, warum ich diese Aktion nicht erneut durchführen sollte. Irgendwelche Ideen, wie man diese scheinbare Einschränkung umgehen könnte, oder zumindest eine Erklärung, warum es nicht funktioniert?

Solutions Collecting From Web of "Warum kann ich save_posts nicht nach admin_init einbinden?"

Das Hinzufügen von functionen zu Hooks ist eine Laufzeitoperation, sie ist nicht persistent. Welche Hook-Operation Sie auch in Ajax-Aktionen ausführen – sie werden in einer separaten WP-Instanz ausgeführt und laufen ab, sobald die Ajax-Antwort zurückgegeben wird. Sie haben keinen Einfluss auf die aktuell geladene Seite.

Sie müssen Ihre functionalität save_post wie gewohnt an save_post (nicht in der Ajax-Aktion) und nach Ihrer zusätzlichen save_post um damit save_post .

Ich habe mir im Zusammenhang mit einem verwandten Thema buchstäblich den Kopf zerbrochen und dies ist das erste, was ich online gelesen habe, das einen soliden Hinweis darauf gab, was ich falsch gemacht habe.

Stellt sich heraus, dass ” add_meta_boxes ” später als ” save_post , müssen Sie den Sicherungs-Hook save_post , save_post erstellt wird. Scheint zunächst kontraintuitiv, aber das Markup wird normalerweise generiert, NACHDEM WordPress seine Verarbeitung durchläuft. Daher ist es sinnvoll, dass die Hooks eingerichtet werden, bevor die Metabox gerendert wird.

Glücklicherweise hatte ich ein wenig Code, der in den admin_init Hook admin_init , der vor save_post so dass es wirklich einfach wurde, das Problem zu lösen.

Nochmals vielen Dank für das Posten dieser Frage. Es war nicht genau das, wonach ich suchte, aber es deutete auf die Antwort auf das Problem hin.