是否可以在子主题的主导航中添加动态链接

时间:2020-10-18 作者:Nora McDougall-Collins

我的客户希望在主导航中有一个到最新帖子的链接,但仍然能够像往常一样通过仪表板管理导航。我没有找到一个插件来完成这个任务,所以我可能需要自定义代码。我可以将其添加到子主题中,但我认为它不应该出现在仪表板菜单中,如果他们愿意,可以将其移动到其他顺序。

我的搜索在谷歌或这个社区都没有结果,但我可能只是没有使用正确的搜索词。

1 个回复
最合适的回答,由SO网友:Tom 整理而成

创建一个新的“自定义链接”菜单项,其中URL为#latestpost(它将充当代码的占位符和目标)。您可以根据自己的喜好为该项目命名。然后,此代码将找到该菜单项(通过查找占位符URL),然后将其URL替换为最新帖子的URL。因为过滤器在添加所选CSS类的代码运行之前,所以菜单高亮显示甚至可以工作。当您访问博客上的最新帖子时,此菜单项将亮起。

将代码放在插件或主题函数中。php文件。

// Front end only, don\'t hack on the settings page
if ( ! is_admin() ) {
    // Hook in early to modify the menu
    // This is before the CSS "selected" classes are calculated
    add_filter( \'wp_get_nav_menu_items\', \'replace_placeholder_nav_menu_item_with_latest_post\', 10, 3 );
}
 
// Replaces a custom URL placeholder with the URL to the latest post
function replace_placeholder_nav_menu_item_with_latest_post( $items, $menu, $args ) {
 
    // Loop through the menu items looking for placeholder(s)
    foreach ( $items as $item ) {
 
        // Is this the placeholder we\'re looking for?
        if ( \'#latestpost\' != $item->url )
            continue;
 
        // Get the latest post
        $latestpost = get_posts( array(
            \'numberposts\' => 1,
        ) );
 
        if ( empty( $latestpost ) )
            continue;
 
        // Replace the placeholder with the real URL
        $item->url = get_permalink( $latestpost[0]->ID );
    }
 
    // Return the modified (or maybe unmodified) menu items array
    return $items;
}

相关推荐

Sub Menus will not work

我急需帮助。我尽了我所知的一切努力将我的子菜单恢复到我的网站上。我安装了一个元滑块插件,在我的主页上获得一个滑块。它工作得很好,然后,我的子菜单停止工作!然后我停用了插件,认为这就是导致它的原因,子菜单仍然没有显示在我的网站上。我不确定我是否丢失了代码或什么,但我将非常感谢能得到的任何帮助。我也有海明威的主题,不确定这是否有什么关系。