Rumah  >  Soal Jawab  >  teks badan

Peraturan penulisan semula berbilang memautkan artikel tersuai PHP.

<p>Saya baru menggunakan PHP dan saya cuba melakukan beberapa peraturan menulis semula untuk menukar struktur beberapa pautan. Saya mencuba beberapa kod yang ditemui dan kod ini hanya berfungsi untuk jenis siaran tersuai pertama yang saya nyatakan dalam gelung untuk. Saya ingin membuat gelung for yang mengubah pautan untuk semua jenis siaran tersuai yang saya nyatakan (nama jenis siaran ini berada dalam tatasusunan), berikut ialah kod peraturan penulisan semula saya: </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 . '/'); } lain{ kembalikan $post_link; } } add_filter('post_type_link', 'mycustomname_link', 1,3); fungsi mycustomname_rewrites_init(){ add_rewrite_rule('new/posts/([^/]+)/([0-9]+)?$', 'index.php?post_type=nature_posts&p=$matches[1]&p=$matches[ 2]', 'atas'); flush_rewrite_rules(); } add_action('init', 'mycustomname_rewrites_init'); </pra> <p>Saya lihat terdapat penyataan pulangan dalam fungsi jadi ia hanya akan menggunakan peraturan penulisan semula pada lelaran pertama dan nama pos tersuai pertama, bagaimana saya boleh membuat gelung for supaya ia berfungsi untuk saya semua post_names yang ditentukan dan tidak berhenti pada lelaran pertama? </p>
P粉393030917P粉393030917423 hari yang lalu445

membalas semua(1)saya akan balas

  • P粉605233764

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

    Anda boleh mencuba ini:

    Dalam fungsi mycustomname_link, kami menambah gelung untuk gelung melalui tatasusunan $custom_post_types. Untuk setiap jenis siaran tersuai, ia menyemak sama ada jenis siaran semasa sepadan dengan mana-mana nama dalam tatasusunan. Sekiranya terdapat padanan, peraturan penulisan semula akan digunakan.
    Begitu juga, dalam fungsi mycustomname_rewrites_init, kami menambah gelung untuk mendaftarkan peraturan penulisan semula untuk semua jenis siaran tersuai. Setiap jenis siaran tersuai akan mempunyai peraturan penulisan semula sendiri.

    Dengan pengubahsuaian ini, peraturan penulisan semula akan digunakan pada semua jenis siaran tersuai yang dinyatakan dalam tatasusunan $custom_post_types tanpa berhenti pada lelaran pertama. Pastikan anda mengemas kini tatasusunan $custom_post_types dengan nama semua jenis siaran tersuai yang anda mahu sertakan dalam peraturan penulisan semula.


    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');

    balas
    0
  • Batalbalas