簡體   English   中英

WordPress-在同一頁面上顯示某個類別的帖子

[英]WordPress - displaying posts from a category on the same page

我有一個名為“商店”的頁面。 在該頁面上,我顯示一個自定義菜單,其中包含指向諸如“書”,“鞋”等類別的鏈接。每當我單擊這些鏈接/類別之一時,便會帶我到相關的類別頁面,例如/category/books/

我不希望它將我重定向到類別頁面,我希望它在單擊菜單項的頁面(“商店”)上顯示帖子。 我在嘗試完成此操作時遇到的唯一問題是我不知道如何更改自定義菜單行為。 我不希望它重定向我,而是將GET值發送到同一頁面(“商店”) 然后,商店頁面將使用該GET值並顯示相關帖子。

我知道如何顯示類別等中的帖子。我只是不知道如何更改自定義菜單的行為。

有人可以幫我嗎? 我會很感激。

原始答案:

使用wp_get_nav_menu_items

$menu_slug = 'YOUR_MENU_SLUG';
$menu_id = get_nav_menu_locations()[$menu_slug];
$menu_items = wp_get_nav_menu_items($menu_id);

foreach($menu_items as $item){
    if($item->object == 'category'){
        print('<p>Title: ' . $item->title . '<br>ID: ' . $item->object_id . '</p>');
    }
}

wp_get_nav_menu_items返回菜單項數組。 您會獲得有關該項目的一些信息,例如類型(帖子,類別,...),ID,標題等。 有關屬性的完整列表,請參見http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items

希望這可以幫助 :)

更新:

假設您的永久鏈接設置為默認設置,則以下代碼將打印使用GET的修改菜單。

$menu = wp_nav_menu(array(
    'theme_location'=>'YOUR_MENU_LOCATION',
    'echo'=>0,
));
$new_url = $_SERVER['SCRIPT_NAME'] . '?shop_page=$1';
$menu = preg_replace('/href="[^"]*cat=(.+)"/', 'href="'.$new_url.'"', $menu);
print($menu);

正則表達式可能不是最好的,因為它會忽略其他GET值,而我對它們沒有經驗。 如果您的永久鏈接設置不同,並且每次更改時,都必須編輯正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM