Maison  >  Questions et réponses  >  le corps du texte

Plusieurs règles de réécriture relient les articles personnalisés PHP.

<p>Je suis nouveau sur PHP et j'essaie de réécrire des règles pour modifier la structure de certains liens. J'ai essayé du code trouvé et ce code ne fonctionne que pour le premier type de publication personnalisé que je spécifie dans la boucle for. Je souhaite créer une boucle for qui modifie les liens pour tous les types de publication personnalisés que je spécifie (les noms de ces types de publication sont dans un tableau), voici mon code de règle de réécriture : </p> <pre class="brush:php;toolbar:false;">function mycustomname_link($post_link, $post = 0) { if($post->post_name === $name_of_my_post) { return home_url('new' .'/'. 'posts'.'/'. $post->post_name .'/'. $post->ID . '/'); } autre{ retourner $post_link ; } } add_filter('post_type_link', 'mycustomname_link', 1,3); fonction monnompersonnalisé_rewrites_init(){ add_rewrite_rule('new/posts/([^/]+)/([0-9]+)?$', 'index.php?post_type=nature_posts&p=$matches[1]&p=$matches[ 2]', 'haut'); flush_rewrite_rules(); } add_action('init', 'mycustomname_rewrites_init'); ≪/pré> <p>Je vois qu'il y a une instruction return dans la fonction, donc elle n'appliquera les règles de réécriture qu'à la première itération et au premier nom de publication personnalisé, comment puis-je créer une boucle for pour qu'elle fonctionne pour moi tous les noms de publication spécifiés et non s'arrêter à la première itération ? </p>
P粉393030917P粉393030917423 Il y a quelques jours446

répondre à tous(1)je répondrai

  • P粉605233764

    P粉6052337642023-07-28 00:14:02

    Vous pouvez essayer ceci :

    Dans la fonction mycustomname_link, nous avons ajouté une boucle pour parcourir le tableau $custom_post_types. Pour chaque type de publication personnalisé, il vérifie si le type de publication actuel correspond à un nom du tableau. S'il y a une correspondance, les règles de réécriture seront appliquées.
    De même, dans la fonction mycustomname_rewrites_init, nous avons ajouté une boucle pour enregistrer les règles de réécriture pour tous les types de publications personnalisées. Chaque type de publication personnalisé aura ses propres règles de réécriture.

    Avec cette modification, les règles de réécriture seront appliquées à tous les types de publications personnalisés spécifiés dans le tableau $custom_post_types sans s'arrêter à la première itération. Assurez-vous de mettre à jour le tableau $custom_post_types avec les noms de tous les types de publication personnalisés que vous souhaitez inclure dans la règle de réécriture.


    function mycustomname_link($post_link, $post = 0) {
        $custom_post_types = array('name_of_my_post', 'another_post_type', 'yet_another_post_type'); // Add all your custom post type names here
    
        foreach ($custom_post_types as $post_type) {
            if ($post->post_type === $post_type) {
                return home_url('new' .'/'. 'posts'.'/'. $post->post_name .'/'. $post->ID . '/');
            }
        }
    
        return $post_link;
    }
    add_filter('post_type_link', 'mycustomname_link', 10, 2);
    
    function mycustomname_rewrites_init(){
        $custom_post_types = array('name_of_my_post', 'another_post_type', 'yet_another_post_type'); // Add all your custom post type names here
    
        foreach ($custom_post_types as $post_type) {
            add_rewrite_rule('new/posts/([^/]+)/([0-9]+)?$', 'index.php?post_type=' . $post_type . '&p=$matches[1]&p=$matches[2]', 'top');
        }
    
        flush_rewrite_rules();
    }
    add_action('init', 'mycustomname_rewrites_init');

    répondre
    0
  • Annulerrépondre