Warum sind diese Einstellungen nicht registriert?

Nach dem Update einer WordPress-Site auf Version 4.2 (und dem erzwungenen 4.2.1-Sicherheitsupdate) erhalte ich einige merkwürdige veraltete Fehler:

functionalität: Nicht registrierte Einstellung

Die post-type-menu-page Einstellung ist nicht registriert. Nicht registrierte Einstellungen sind veraltet. Siehe https://codex.wordpress.org/Settings_API. Veraltet in Version 2.7.

Ich habe den gleichen Fehler für viele andere Post-Typen: post-type-dashboard-page , post-type-menu-post , post-type-menu-forum (das ist von bbPress), post-type-dashboard-post und Mehr.

Diese Fehler wurden vom Plug-in Log Deprecated Calls gemeldet. Es wird keine Zeile oder Datei angezeigt.

Warum bekomme ich diese Fehler?

Die nativen WordPress-Post-Typen interessieren mich nicht, ich möchte nur meine eigenen Post-Typen reparieren, um mit 4.2+ auf dem neuesten Stand zu sein.

EDIT: Basierend auf der Struktur der Option, konnte ich keinen Verweis sowohl auf post-type- oder post-type-menu- in WordPress ‘Quellcode finden.

Solutions Collecting From Web of "Warum sind diese Einstellungen nicht registriert?"

Die Fehlermeldung ist hier eigentlich irreführend. WP überprüft nicht, ob die Einstellungen registriert sind – zB if ( isset( $GLOBALS['wp_registered_settings']['foo'] ) ) – es prüft, ob das Formular auf die Standardoptionenseite ( options.php ), anstatt eine benutzerdefinierte ( options-general.php?page=foo ).

Es ist also durchaus möglich, diese Warnung nach dem Aufruf von register_setting() , wenn Sie so etwas tun:

Sie können nur das gesamte action entfernen, da es standardmäßig an die aktuelle URL gesendet wird. In diesem Fall enthält es den Parameter ” ?page=foo , sodass $unregistered nicht festgelegt wird.

Da “Ich möchte nur meine eigenen Beitragstypen mit 4.2+ auf dem neuesten Stand halten”, müssen Sie Ihre Einstellungen mit register_setting()

Die Warnung, die Sie sehen, wird in wp-admin/options.php :

 180 if ( $options ) { 181 foreach ( $options as $option ) { 182 if ( $unregistered ) 183 _deprecated_argument( 'options.php', '2.7', sprintf( __( 'The %1$s setting is unregistered. Unregistered settings are deprecated. See https://codex.wordpress.org/Settings_API' ), $option, $option_page ) ); 

$unregistered wird früher in derselben Datei gesetzt:

 134 if ( 'update' == $action ) { 135 if ( 'options' == $option_page && !isset( $_POST['option_page'] ) ) { // This is for back compat and will eventually be removed. 136 $unregistered = true; 137 check_admin_referer( 'update-options' ); 138 } else { 139 $unregistered = false; 140 check_admin_referer( $option_page . '-options' ); 141 }