[英]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.