显示/隐藏自定义WordPress菜单

时间:2018-05-09 02:59:42

标签: php html css wordpress

我在WordPress主题上使用自定义的HTML CSS菜单。由于我不知道如何从后端开始工作(根本),我试图在页面标题的帮助下隐藏菜单项。

我发现$single_post_title是WordPress中的页面标题。所以我尝试使用以下代码隐藏菜单项。我也将它用于其他菜单项。

<?php
    $port = "Portfolio";
    if ($port != $single_post_title) {
        $port = "Portfolio";
} else {
?>
   <style type="text/css">
       #portfolio{
       display:none;
}  </style>
<?php 
}
?>

菜单代码:

 <div class="col-md-9" class="fancymenu"> 
    <a id="#portfolio" href="/Portfolio/"><?php echo $port ?></a>
    <a id="#about" href="/About-Me/"><?php echo $about ?></a>
    <a id="#contact" href="/Contact-me/"><?php echo $contact ?></a>
 </div>

当我继续玩这个时,有时会隐藏(当替换时!= = =)&amp;有时它没有。

我希望有人可以帮我解决这个问题。

谢谢堆!

1 个答案:

答案 0 :(得分:2)

如果你不介意,我会稍微挑选你的代码(别担心,这是为了帮助你!)

你正在处理一些问题(并将要处理)。首先,如果你打算使用它,我会认真考虑坚持使用WordPress生态系统,除非你带着它Headless

除此之外,让我们继续吧。通常,您不应该依赖自己当前范围中未定义的变量。谁知道$single_post_title的定义位置,或者甚至是什么。

WordPress有一些相对“很好”命名的PHP函数可以与帖子和页面进行交互(其中许多将作为Google的第一个搜索结果显示为“在WordPress中获取当前页面标题”)

获取页面/帖子标题的标准方法是使用get_the_title()功能。

另一个问题是,如果你有权访问元素的源代码,加载一些CSS来隐藏元素是非常麻烦的,只是有条件地跳过元素!

最后,一般来说,ID不需要(或者更确切地说,不应该)在他们面前有一个英镑符号。针对他们的语言将把它放在那里。还需要考虑的是,您的硬编码href属性具有大写字母,就像是slugtitle的组合。我会澄清什么是。

所有我想到的,我会删除您拥有的第一个代码块,并用以下内容替换菜单代码:

<?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来管理页面/帖子内容,除非是设计的,否则以后会变得很麻烦。