如果你不介意,我会稍微分解一下你的代码(别担心,这是为了帮助你!)
您正在处理(并且将要处理)几个问题。首先,如果您要使用 WordPress 生态系统,我会认真考虑坚持使用它,除非您要使用它 Headless。
除此之外,让我们继续。一般来说,您不应该依赖您自己尚未在当前范围内定义的变量。谁知道$single_post_title 是在哪里定义的,甚至是不是。
WordPress 有一些相对“好听”的 PHP 函数来与帖子和页面交互(其中许多将显示为谷歌搜索“在 WordPress 中获取当前页面标题”等搜索的第一个结果)
获取页面/帖子标题的标准方法是使用get_the_title() 函数。
另一个问题是,如果您可以访问元素的源代码,加载一些 CSS 以隐藏元素是相当混乱的,只需有条件地跳过该元素!
最后,一般来说,身份证不需要(或者说根本不应该有)在他们前面的井号。以他们为目标的语言会为你把它放在那里。其他需要考虑的是您的硬编码href 属性具有大写字母,就像它是slug 和title 的组合。我会澄清一下是什么。
记住我所说的一切,我将删除您拥有的第一个代码块,并将菜单代码替换为以下内容:
<?php $current_page_title = get_the_title();
echo '<div class="col-md-9" class="fancymenu">';
if( $current_page_title != 'Portfolio' ) echo '<a id="portfolio" href="/Portfolio/">Portfolio</a>';
if( $current_page_title != 'About Me' ) echo '<a id="about" href="/About-Me/">About Me</a>';
if( $current_page_title != 'Contact Me' ) echo '<a id="contact" href="/Contact-me/">Contact Me</a>';
echo '</div>';
?>
您可以通过一个简单的循环使其更易于维护:
<?php
// Get the current Page Title
$current_page_title = get_the_title();
// Define our Pages as an Array
$pages = array( 'Portfolio', 'About Me', 'Contact Me' );
// Loop through that array
foreach( $pages as $page ){
if( $current_page_title != $page ){
// In here, it means the "page" from the array isn't the "current page"
// that's being viewed, so echo out the item.
echo '<a id="'. sanitize_title( $page ) .'" href="'. sanitize_title( $page ) .'">'. $page .'</a>';
}
}
?>
注意当前的循环会将您的 ID 替换为 about 等 about-me。
所以,既然您已经阅读了所有这些内容 - 我真的会考虑学习 WordPress 功能的工作原理,因为 Navigation Menu 功能会为您处理所有这些内容(以及更多内容),并且会让将来维护网站要容易得多。您当前的方法更像是一个 HTML/PHP 模板,它仅使用 WordPress 作为 CMS 来管理页面/帖子内容,除非是设计使然,否则以后会变得很麻烦。