【问题标题】:Show/ Hide Custom WordPress Menu显示/隐藏自定义 WordPress 菜单
【发布时间】:2018-05-09 11:53:19
【问题描述】:

我在 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>

当我继续玩这个时,有时它会隐藏(当用 == 替换 != 时)有时它不会。

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

谢谢大家!

【问题讨论】:

    标签: php html css wordpress


    【解决方案1】:

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

    您正在处理(并且将要处理)几个问题。首先,如果您要使用 WordPress 生态系统,我会认真考虑坚持使用它,除非您要使用它 Headless

    除此之外,让我们继续。一般来说,您不应该依赖您自己尚未在当前范围内定义的变量。谁知道$single_post_title 是在哪里定义的,甚至是不是。

    WordPress 有一些相对“好听”的 PHP 函数来与帖子和页面交互(其中许多将显示为谷歌搜索“在 WordPress 中获取当前页面标题”等搜索的第一个结果)

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

    另一个问题是,如果您可以访问元素的源代码,加载一些 CSS 以隐藏元素是相当混乱的,只需有条件地跳过该元素!

    最后,一般来说,身份证不需要(或者说根本不应该有)在他们前面的井号。以他们为目标的语言会为你把它放在那里。其他需要考虑的是您的硬编码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 替换为 aboutabout-me

    所以,既然您已经阅读了所有这些内容 - 我真的会考虑学习 WordPress 功能的工作原理,因为 Navigation Menu 功能会为您处理所有这些内容(以及更多内容),并且会让将来维护网站要容易得多。您当前的方法更像是一个 HTML/PHP 模板,它仅使用 WordPress 作为 CMS 来管理页面/帖子内容,除非是设计使然,否则以后会变得很麻烦。

    【讨论】:

    • 谢谢大家!这是迄今为止我在网上收到的最好的支持。你对我的帮助超出了你的想象!!!学到了很多,非常感谢。我可以给您寄一张 iTunes 卡或其他东西以感谢您的支持吗?干杯
    • 我的荣幸!虽然我确实在某个地方埋了一个 kofi 链接,但不要觉得有必要为这个答案付钱给我——这几乎不值得。如果再让一个人开始作为开发人员,我会得到更多的快乐!如果您需要任何进一步的帮助或需要其他资源来帮助您入门,请随时与我们联系!
    • 找到你的 Kofi 链接后请发给我!谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多