Php WordPress-在同一页面上显示类别中的帖子

Php WordPress-在同一页面上显示类别中的帖子,php,html,wordpress,Php,Html,Wordpress,我有一个名为“商店”的页面。在该页面上,我显示了一个自定义菜单,其中包含指向“书籍”、“鞋子”等类别的链接。每当我单击其中一个链接/类别时,它就会将我带到相关的类别页面,例如/category/Books/ 我不希望它将我重定向到一个分类页面,我希望它在单击菜单项的同一页面(“Shop”)上显示帖子。我在尝试实现这一点时遇到的唯一问题是,我不知道如何更改自定义菜单行为。我不希望它重定向我,而是将GET值发送到同一页面(“Shop”)。然后,商店页面将获取该值并显示相关帖子 我知道如何显示来自类别

我有一个名为“商店”的页面。在该页面上,我显示了一个自定义菜单,其中包含指向“书籍”、“鞋子”等类别的链接。每当我单击其中一个链接/类别时,它就会将我带到相关的类别页面,例如
/category/Books/

我不希望它将我重定向到一个分类页面,我希望它在单击菜单项的同一页面(“Shop”)上显示帖子。我在尝试实现这一点时遇到的唯一问题是,我不知道如何更改自定义菜单行为。我不希望它重定向我,而是将GET值发送到同一页面(“Shop”)。然后,商店页面将获取该值并显示相关帖子

我知道如何显示来自类别等的帖子。我只是不知道如何更改自定义菜单的行为


有人能帮我吗?我将不胜感激。

原始答案:

使用
wp\u get\u nav\u菜单项

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

正则表达式可能不是最好的,因为它忽略了其他GET值,而我对它们没有经验。如果您的永久链接设置不同,并且每次更改时,您都必须编辑正则表达式。

所以基本上我必须创建一个“自定义菜单”?没有办法阻止重定向到分类页面?是的,有!不知何故,我错过了
wp\u nav\u菜单的
echo
参数。。。如果将其设置为0,将返回代码而不是打印代码。然后可以使用正则表达式更改链接。我正在制作一个示例,将编辑我的答案。感谢您的更新。我在这里看到的唯一问题是,每当我添加一个新类别时,它都不会自动更新URL。尽管这似乎仍然是唯一的办法,如果这里没有解决这个问题的答案,我会把这个答案标记为正确的。无论如何,我投票支持你的答案,谢谢!什么意思,它不会自动更新?是否只更改了第一个url?例如,假设我创建了5个类别,然后应用您的示例创建通过GET参数发送数据的自定义url。比方说,两个月后,我添加了下一个类别。我将不得不修改它的代码,以改变这些类别的网址太。或者我对你的代码理解得不够好?
$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);