Rumah  >  Soal Jawab  >  teks badan

Cara WordPress untuk menambah parameter pada struktur URL mesra

Saya membina laman web Wordpress dengan halaman yang dipanggil "Nieuwsberichten". URL kelihatan seperti

https://www.example.com/newsitems

Halaman ini dinamik, saya memerlukan parameter tambahan yang dipanggil "halaman_berita"

https://www.example.com/news/?news_page=recent

URL di atas tidak mesra, jadi saya mencipta peraturan tulis semula untuk ini dan menambah pembolehubah "news_page".

fungsi.php

function add_query_vars($vars){   
    $vars[] = 'news_page';     
    return $vars;
}
add_filter( 'query_vars', 'add_query_vars', 10, 1 );

function rewrite_paged(){
    add_rewrite_rule('^nieuwsberichten/([0-9]+)/?', 'nieuwsberichten?news_page=$matches[1]', 'top');
}
add_action('init', 'rewrite_paged');

Saya telah menyegarkan pautan kekal Menu -> Tetapan -> Pautan kekal -> Simpan

Jika saya menyemak imbas ke

https://www.example.com/news/recent/

Ia akan mengubah hala ke

https://www.example.com/newsmessages/

Apa yang saya hilang dalam kod saya?

Semoga seseorang boleh membantu saya menyelesaikan masalah ini

P粉019353247P粉019353247300 hari yang lalu441

membalas semua(1)saya akan balas

  • P粉541551230

    P粉5415512302024-01-17 14:33:44

    Dalam bahagian regex anda hanya menentukan entri berangka tetapi menghantar teks seperti "terhampir" dalam url. Mungkin kesilapan terletak di sini. Sila semak sama ada ia berfungsi untuk input angka dan edit ungkapan anda jika itu masalahnya. Selain itu, struktur url yang anda nyatakan nampaknya tidak betul.

    Apa pun, saya tidak pasti tentang jawapan saya, jadi saya menghargainya jika anda boleh mengesahkannya selepas menyemak.

    https://developer.wordpress.org/reference/functions/add_rewrite_tag/ Ini mungkin fungsi yang perlu anda gunakan untuk menambah parameter. Fungsi ini juga tidak memerlukan fungsi query_var. Jadi saya rasa anda tidak perlu menggunakan fungsi lain.

    Saya tidak dapat menyemak atau mengujinya sekarang. Jika isu anda tidak diselesaikan, saya akan menelitinya dengan lebih terperinci.

    Anda boleh menggunakannya seperti ini:

    function rewrite_paged(){
            add_rewrite_tag('%news_page%', '([^/]+)');
            add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'nieuwsberichten?news_page=$matches[1]', 'top');
    }
    add_action('init', 'rewrite_paged');

    Selain itu, jika anda menunjuk ke halaman, anda perlu menggunakan ID halaman atau nama halaman. Blog atau produk dll. Jika ya, masih terdapat parameter yang anda perlu gunakan dan anda harus mengubah hala URL ini ke index.php. Saya tinggalkan contoh untuk anda memahami perkara yang saya perkatakan, dan untuk memudahkan anda melihat, anda boleh melihat penulisan semula di tapak web anda seperti ini:

    Lihat contoh:

    global $wp_rewrite;
    print_r($wp_rewrite);

    Contoh:

    Nama halaman yang sepadan:

    add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?pagename=nieuwsberichten&news_page=$matches[1]', 'top');

    ID halaman yang sepadan:

    add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?page_id=10000&news_page=$matches[1]', 'top');

    Contoh anda betul jika anda memasang di luar WordPress, tetapi jika ia berada di dalam WordPress, semua permintaan harus diarahkan ke index.php. Jadi anda mungkin perlu mengedit kod yang saya berikan seperti contoh ini.

    balas
    0
  • Batalbalas