it-swarm.com.de

Flush Rewrite Rules, wenn eine neue Site im Netzwerk erstellt wird

Ich arbeite mit einem Multisite-Setup und habe einige benutzerdefinierte Beitragstypen erstellt, die anscheinend einwandfrei funktionieren, außer wenn ich versuche, eine der Beitragstypenseiten im Frontend anzuzeigen, wird ein weißer Bildschirm angezeigt. Nachdem wir uns mit dem Problem befasst haben, scheint es, als ob Flush Rewrite Rules das Problem beheben. Das Problem dabei ist, dass Administratoren keinen Zugriff auf die Permalinks-Einstellung haben und diese daher nicht selbst löschen können.

Ich verwende derzeit den folgenden Code, um beim Aktivieren eines Themas zu leeren. Dies ist jedoch nicht ideal, da ein Benutzer zu einem anderen Thema wechseln und dann zum primären Thema zurückkehren muss. Ich versuche also, eine Möglichkeit zu finden, den folgenden Code so zu ändern, dass er funktioniert, wenn eine neue Site erstellt wird, sodass die benutzerdefinierten Beitragstypen von Anfang an funktionieren. ---

/* Flush rewrite rules for custom post types. */
add_action( 'after_switch_theme', 'bt_flush_rewrite_rules' );

/* Flush your rewrite rules */
function bt_flush_rewrite_rules() {
     flush_rewrite_rules();
}

Jede Hilfe ist dankbar, danke.

AKTUALISIERT

Ich habe eine Hauptwebsite, auf der sich Benutzer im Front-End für eine Website wie mysite.com/theirsite anmelden. Das Standarddesign für sie ist festgelegt. Das ist, wo ich versuche, den Code so zu platzieren, dass bündiges Umschreiben funktioniert, wenn sie eine Site erstellen, nicht das Thema wechseln. Das Admin-Dashboard wurde vereinfacht, sodass sie keinen Zugriff auf Permalinks oder Themen -> Editor haben.

Ich würde jedoch denken, dass es beim Erstellen von benutzerdefinierten Beitragstypen erforderlich ist, das Überschreiben zu löschen, sodass nicht einmal der zusätzliche Code verwendet werden muss.

Wenn es hilft, ist dies meine Postleitzahl -

http://Pastebin.com/XsRjLj3q

1
Rich

Sie müssen einen Hook für die Aktion wpmu_new_blog erstellen:

add_action( 'wpmu_new_blog', 'wpse8170_wpmu_new_blog' );
function wpse8170_wpmu_new_blog( $blog_id ) {
    switch_to_blog( $blog_id );
    flush_rewrite_rules();
    restore_current_blog();
}
1
Eugene Manuilov

stellen Sie die Site selbst bereit oder geben Sie Dateien weiter und lassen Sie dies von anderen tun. definieren WP_DEFAULT_THEME in config, um ein Standarddesign zu verwenden, wodurch after_switch_theme negiert wird?

meiner meinung nach laden wir bei einer normalen wp-installation dateien auf den server hoch, definieren unsere db-einstellungen, treffen die domäne, wp zeigt eine seite für einstellungen an, klicken auf installieren, fertig. Jetzt würden Sie normalerweise das Thema zu diesem Zeitpunkt ändern, aber sagen Sie, dass sie niemals ein Thema auswählen, wie Sie es bereits mit WP_DEFAULT_THEME definiert haben?

sie könnten ungezogen sein, Code zu front index.php hinzufügen, eine Datei hinzufügen, die Ihr themenspezifisches Setup ausführt und sich selbst entfernt, wenn Sie fertig sind.

0
gwillie

Ich selbst hatte ein ähnliches Problem, als ich ein Theme-Setup beim Erstellen eines neuen Blogs auf Multisite automatisierte. Nachdem ich verschiedene Ansätze ausprobiert hatte, fand ich einen großartigen Artikel unter: https://jeremyfelt.com/2015/07/17/flushing-rewrite-rules-in-wordpress-multisite-for -Fun-and-Profit/# Kommentar-141799

Der Artikel bietet Ihnen viele verschiedene Optionen, doch kurz gesagt lautete die Methode, mit der ich die Umschreiberegeln auf meiner neuen Website herausfand, wie folgt:

/* Add action call to New Blog Hook */
add_action('wpmu_new_blog', 'setup_my_site', 10, 2);

// Setup function
function setup_my_site($blog_id, $user_id){

    // Switch blog context  
    switch_to_blog($blog_id);

    // Delete initial rule options
    delete_option( 'rewrite_rules' );

    // Restore original blog context
    restore_current_blog();

}

Hoffe das hilft jemandem in einer ähnlichen Situation :)

0
Matt Woodward