Ich erhalte folgende Meldungen:
Anwendungs-Passwort-Plugin
Cookie nonce ist ungültig
iThemes-Sicherheit
Eine Nonce-Sicherheitsüberprüfung ist fehlgeschlagen, sodass die Anforderung nicht wie erwartet ausgeführt werden kann. Bitte laden Sie die Seite neu und versuchen Sie es erneut.
... wenn ich versuche, Einstellungen im Netzwerk (Unterverzeichnis Multisite) Admin zu speichern. Ich erhalte diese Meldung jedoch nicht, wenn ich das Einstellungsfeld für ein Plugin innerhalb einer Site verwende.
Ich habe einige Fehler behoben und festgestellt, dass wp_verify_nonce () immer false zurückgibt. Das Cookie-Token stimmt nie mit dem erwarteten Token überein. Ich habe keine Ahnung, warum sich Wordpress so verhält.
Hat jemand eine Idee, warum sich Wordpress nonce so verhält? Wie kann ich es reparieren?
Ich benutze Bedrock und hier sind meine Einstellungen:
define('WP_HOME', 'http://my-local-cms.dev');
define('WP_SITEURL', 'http://my-local-cms.dev/backend');
define('CONTENT_DIR', '/app');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'my-local-cms.dev');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
Ich habe das Problem gefunden.
Die Links zum Netzwerkadministrator sind falsch. Beispielsweise haben Netzwerkbenutzer:
Es sollte sein (wenn WordPress Core im Backend/liegt)
Wenn Sie den ersten Link besuchen und im Browser/backend/vor wp-admin hinzufügen, verhält sich der Netzwerkadministrator korrekt.
Fix
Bearbeiten 30.08.2017 Neue Lösung:
public function fix_network_admin_url($path, $scheme) {
$path = ltrim($path, '/');
return str_replace('/wp-admin/network', '/backend/wp-admin/network', $path);
}
add_filter('network_admin_url','fix_network_admin_url', 10, 3);
Ende des 30.08.2017
Ich habe mich dazu entschieden, ein separates Netzwerkadministrationsmenü mit korrigierten Links zu erstellen. Dies ist keine elegante Lösung, ich weiß jedoch nicht, wie ich die URLs nur für das native Netzwerkadministrator-Menü korrigieren und die restlichen Links intakt lassen soll (siehe "Weitere mögliche Lösungen")..
Meine Lösung ist ähnlich wie folgt (entweder zu function.php in theme hinzufügen oder ein Plugin erstellen):
add_action('admin_head', 'admin_head_network_menu');
add_action('admin_bar_menu', 'custom_network_admin_bar_menu', 20);
function admin_head_network_menu()
{
echo '<style type="text/css">#wp-admin-bar-my-sites-super-admin {display: none}</style>';
}
function custom_network_admin_bar_menu($adminBar)
{
// Don't add network admin bar for non super admins
if (!current_user_can('manage_network')) {
return;
}
$mainMenuID = 'my-new-network-admin-menu';
$adminBar->add_menu([
'id' => $mainMenuID,
'title' => __('Network Admin'),
'href' => new_admin_url(),
]);
$adminBar->add_menu([
'id' => $mainMenuID.'-sites',
'parent' => $mainMenuID,
'title' => __('Network Sites'),
'href' => new_admin_url('sites.php'),
]);
$adminBar->add_menu([
'id' => $mainMenuID.'-users',
'parent' => $mainMenuID,
'title' => __('Network Users'),
'href' => new_admin_url('users.php'),
]);
$adminBar->add_menu([
'id' => $mainMenuID.'-plugins',
'parent' => $mainMenuID,
'title' => __('Network Plugins'),
'href' => new_admin_url('plugins.php'),
]);
$adminBar->add_menu([
'id' => $mainMenuID.'-settings',
'parent' => $mainMenuID,
'title' => __('Network Settings'),
'href' => new_admin_url('settings.php'),
]);
}
function new_admin_url($path = '')
{
$url = network_admin_url($path);
return str_replace('/wp-admin/network', '/backend/wp-admin/network', $url);
}
Andere mögliche Lösungen
Wenn Sie eine (Sub-) Domain-Multisite-Installation haben, überprüfen Sie "felixarntz/multisite-fixes" auf Github (mu-plugins/wpms-site-url-fixer.php).
Ich denke, vielleicht kann dies mit einer Änderung in .htaccess behoben werden. Aus mehreren Gründen war dies keine Option für mein Projekt. Aber wenn jemand anderes es versuchen möchte, ist hier ein Beispiel für .htaccess für Bedrock:
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]