Einstellungs-API in Multisite – Fehlende Update-Nachricht

Wenn ich die Einstellungs-API in einer Multisite-Installation verwende und die options.php auf der Netzwerkebene sitzt, options.php das options.php der Optionen in options.php nicht, da die Verwaltungsseite unter wp-admin/network sitzt und WP erwartet, dass die Seite aktiv ist wp-admin .

Ich fügte eine function hinzu, die überprüft, ob diese WP-Installation eine Installation von multsite ist (über die Konstante), und falls dies der Fall ist, ändert sie den Aktionswert des Formulars in ../option.php . Dies speichert die Optionen OK, aber die Standardmeldung “Einstellungen gespeichert.” fehlt (die Abfragezeichenfolge enthält jedoch settings-updated=true ).

Irgendwelche Gedanken darüber, wie die Nachricht erscheinen soll?

Solutions Collecting From Web of "Einstellungs-API in Multisite – Fehlende Update-Nachricht"

Für Netzwerkoptionsseiten lautet die korrekte URL für die Formularaktion:

 wp-admin/network/edit.php?action=your_option_name 

Dann müssen Sie einen callback registrieren:

 add_action( 'network_admin_edit_your_option_name', 'your_save_network_options_function' ); 

In dieser Callback-function überprüfen Sie die $_POST Daten, bereiten Sie die Werte vor und speichern Sie sie dann:

 update_site_option( $this->option_name, $this->option_values ); 

Und dann müssen Sie die Weiterleitung ohne weitere Hilfe erstellen:

 // redirect to settings page in network wp_redirect( add_query_arg( array( 'page' => 'your_options_page_slug', 'updated' => 'true' ), (is_multisite() ? network_admin_url( 'admin.php' ) : admin_url( 'admin.php' )) ) ); exit; 

Auf der Optionen-Seite überprüfen Sie $_GET['updated'] und fügen einen Admin-Hinweis hinzu, wenn Sie diesen Parameter gefunden haben.

Ich habe @ toschos Antwort verwendet, die gut funktioniert, aber in bestimmten WordPress-Installationspfaden funktioniert die hartcodierte Formular-Aktions-URL nicht. Hier erklärt @birgire, wie man die richtige URL erstellt :

Wenn Sie auf URLs innerhalb des Netzwerkadmins verweisen, sollten Sie die network_admin_url () berücksichtigen. Core-function, die bei nicht-multisite-Setups auf admin_url () zurückgreift.

 echo esc_url( add_query_arg( 'action', 'your_option_name', network_admin_url( 'edit.php' ) ) );