web-dev-qa-db-fra.com

Supprimer les règles de la nouvelle version du site est créé sur le réseau

Je travaille avec une configuration multisite et j'ai créé des types de publication personnalisés, qui semblent fonctionner correctement, sauf lorsque vous essayez d'afficher l'une des pages de types de publication au recto, je reçois un écran blanc. Après avoir examiné le problème, il semble que des règles de réécriture vides le corrigent. Le problème, c’est que les administrateurs n’auront pas accès au paramètre permaliens, ils ne pourront donc pas le vider eux-mêmes.

J'utilise actuellement le code suivant pour vider le flush lors de l'activation d'un thème, mais ce n'est pas idéal car un utilisateur devra passer à un autre thème puis revenir au thème principal. Donc, je suis en train d'essayer de trouver un moyen de modifier le code suivant pour qu'il fonctionne lorsqu'un nouveau site est créé, afin que les types de publication personnalisés fonctionnent dès le début. ---

/* 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();
}

Toute aide est appréciée, merci.

MIS À JOUR

J'ai un site principal sur lequel les utilisateurs s'inscrivent sur le front-end pour un site tel que mysite.com/theirsite. Le thème par défaut pour eux est défini. C’est là que j’essaie de placer le code de manière à ce que la réécriture à l’écrasement fonctionne lorsqu’ils créent un site, et non un thème. Le tableau de bord Admin est simplifié, ils n'ont donc pas accès aux permaliens ni aux thèmes -> éditeur.

Je penserais cependant que lors de la création de types d'articles personnalisés, il est supposé vider la réécriture, de sorte que vous n'avez même pas besoin d'utiliser le code supplémentaire.

Si cela aide, c’est mon code de type de poste de registre -

http://Pastebin.com/XsRjLj3q

1
Rich

Vous devez créer un point d'ancrage pour l'action wpmu_new_blog:

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

déployez-vous le site vous-même ou donnez-vous des fichiers et laissez-vous les autres le faire? sont en train de définir WP_DEFAULT_THEME dans config pour utiliser un thème par défaut, annulant ainsi after_switch_theme?

à mon avis, lors d'une installation normale de wp, nous téléchargeons des fichiers sur le serveur, définissons nos paramètres de base de données, appuyez sur le domaine, wp affiche une page de paramètres, cliquez sur installer, c'est fait. maintenant, vous devriez normalement changer de thème à ce stade, mais dites-vous qu'ils ne sélectionneront jamais un thème puisque vous en avez déjà défini un avec WP_DEFAULT_THEME?

vous pourriez être méchant, ajouter du code à front index.php, inclure un fichier qui effectue votre configuration spécifique au thème et une fois terminé, supprime lui-même.

0
gwillie

J'ai moi-même rencontré un problème similaire dans le cadre de l'automatisation de la configuration d'un thème lors de la création d'un nouveau blog sur Multisite. Après avoir essayé diverses approches, j'ai trouvé un article génial sur: https://jeremyfelt.com/2015/07/17/flushing-rewrite-rules-in-wordpress-multisite-for -fun-and-profit/# comment-141799

L'article vous propose de nombreuses options, mais en résumé, le moyen que j'ai utilisé pour supprimer les règles de réécriture de mon nouveau site était le suivant:

/* 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();

}

Espérons que cela aide quelqu'un dans une situation similaire :)

0
Matt Woodward