Wordpress: Anzeige einer Fehlermeldung - Hook admin_notices schlägt bei wp_insert_post_data oder publish_post fehl

Ich füge eine Validierung hinzu. Wenn sich ein Beitrag in einer bestimmten Kategorie befindet, müssen bestimmte benutzerdefinierte Felder festgelegt werden.

Dies sollte ein einfaches Einhängen seinwp_insert_post_data undadmin_notices, aber es gibt eine Umleitung, die das verursachtadmin_notices Rückruf zum Verschwinden.

OK - Also habe ich einen Hack erstellt, der die Sitzung verwendet, um meine Fehlermeldung über die Umleitung zu speichern:

function set_post_pending($data, $postarr) {
    // If it's not valid...
        $error = "You are missing some Custom Fields.";
        $_SESSION['admin_notices'] = $error;
        $data['post_status'] = 'pending';
    return $data;
}
add_filter('wp_insert_post_data', 'set_post_pending',1,2);

function session_admin_notice() {
    if($out = $_SESSION['admin_notices']) {
        $_SESSION["admin_notices"] = "";
        echo $out;
    }
    return false;
}
add_action('admin_notices', "session_admin_notice");

Das Problem mit dieser Lösung ist dasetwaswie die Sitzung beim Anrufen nicht verfügbar istsession_admin_notice, das hat ein leichtes (aberverrückt) Lösung:

public static function fix_session_bs() {
    // TODO: Why do I have to do this?
    if(!session_id() && $_COOKIE["PHPSESSID"]) {
        session_start($_COOKIE["PHPSESSID"]);
    }
}
add_action('admin_init', 'fix_session_bs');

Die Frage ist: Warum muss ich diese ganze Verrücktheit durchmachen, um eine Fehlermeldung zu werfen?

Was mache ich falsch?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage