web-dev-qa-db-fra.com

Création d'un flux RSS individuel pour chaque utilisateur du site

J'essaie de créer un flux RSS unique pour chacun des utilisateurs de mon site. Voici le code que j'utilise dans functions.php pour tenter ceci. Je ne vois aucune erreur php lors du chargement de mes pages, mais les flux ne sont pas créés. Des idées?

function init_subscribers_feeds() {

    $subscribers = get_users('role=subscriber');

    function create_feed($id) {
        add_feed($id, 'feed_subscribers_do');
    }
    function feed_subscribers_do() {
        get_template_part('feed', 'subscribers');
    }

    foreach ($subscribers as $subscriber) {
        $id = esc_html($subscriber->user_login);
        create_feed($id);
    }

}
init_subscribers_feeds();
1
fubeca

J'ai été capable de comprendre cela. Voici le code, l'explication suit.

$subscribers = get_users('role=subscriber');
foreach ($subscribers as $subscriber) {
    $subscriber_id = esc_html($subscriber->user_login);
    add_action('init', function() use($subscriber_id) {
        add_feed($subscriber_id, function() {
            get_template_part('feed', 'subscribers');
        });
    });
    $wp_rewrite->flush_rules($hard);
}

Premièrement, j'ai arrêté les fonctions de nidification, selon la critique de Tom J Newell dans les commentaires relatifs à la question initiale.

Deuxièmement, après l’ajout d’un nouveau flux, les règles de réécriture WP doivent être mises à jour. Cela peut être fait manuellement dans les paramètres en réenregistrant les paramètres de lien permanent ou en utilisant $ wp_rewrite comme indiqué ci-dessus.

Troisièmement, pour utiliser la variable $ subscriber_id, je devais l'inclure dans la fonction anonyme avec "use ()".

Enfin, plutôt que d’essayer de séparer les éléments en fonctions et d’appeler ces fonctions, j’ai simplement intégré toutes les anciennes fonctions à des fonctions anonymes.

Tout fonctionne parfaitement maintenant.

1
fubeca