首页 > 解决方案 > 如果 URL 包含特定字符串,我如何隐藏/显示某些元素/div?

问题描述

我有一大组页面 (page1/) 需要显示某个导航栏,还有第二组大页面 (page2/) 需要在其位置显示不同的导航栏。

我尝试了各种 jQuery 来识别 URL 是否包含某个单词,如果包含,则显示相应的导航栏 - 但没有成功。

下面是我尝试过的 jQuery。

<script>
if(strpos($url ,'page1/') !== FALSE) {
echo '#page1-navigation-bar';
}
if(strpos($url ,'page2/') !== FALSE){
echo '#page2-navigation-bar';
}
</script>

这没有效果,我不确定这是否是因为编码错误,我在错误的地方输入了它,我需要做其他事情以及这个编码或所有内容的组合加上更多。

也不确定这是否会在显示另一个时隐藏一个?

请通过说明所需的任何代码以及需要输入的确切位置来提供帮助。

谢谢,迈克尔

标签: phpwordpress

解决方案


有几种方法可以解决这个问题。您可以按照WebSon的建议进行操作,但采用不同的方法,您可以通过页面模板进行操作,也可以使用自定义帖子元数据进行操作。现在请注意,当您使用“ID”做某事时,我建议您更改使用显示的导航wp_nav_menu()

一种带有建议条件的方法,而不是 ID。

<?php

$first_array = [ 'page1', 'page3', 'page5' ];
$second_array = [ 'page2', 'page4', 'page6' ];
$wp_nav_args = [ //your default args ];

if ( is_page($first_array ) ) {
 // Change the entire array or parts of it.
 $wp_nav_args = [];
}
elseif ( is_page($second_array) ) {
 // Change the entire array or parts of it.
 $wp_nav_args = [];
}

wp_nav_menu($wp_nav_args);

页面模板

<?php

$wp_nav_args = [ //your default args ];

if ( is_page_template('template-menu-a') ) {
 // Change the entire array or parts of it.
 $wp_nav_args = [];
}
elseif ( is_page_template('template-menu-b') {
 // Change the entire array or parts of it.
 $wp_nav_args = [];
}

wp_nav_menu($wp_nav_args);

更复杂的方式,不包括模板,但可扩展。

只是想以这种方式分享,因为您也可以通过创建自定义帖子元数据将其用于其他一些事情。此示例显示更新/发布框中的复选框。

<?php 

function add_custom_meta_field() {

    $post_id = get_the_ID();

    if ( get_post_type( $post_id ) !== 'page' ) {
        return;
    }

    $value = get_post_meta( $post_id, '_navigation_b', true );
    ?>
    <div class="misc-pub-section misc-pub-section-last">
        <input type="checkbox" value="1" <?php checked( $value, true, true ); ?> name="_navigation_b" id="_navigation_b" /><label for="_navigation_b"><?php _e( 'Add To Your Calendar Icons', 'navy' ); ?></label>
    </div>
    <?php
}

add_action( 'post_submitbox_misc_actions', 'add_custom_meta_field' );


function save_custom_meta_field() {

    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }

    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    if ( isset( $_POST['_navigation_b'] ) ) {
        update_post_meta( $post_id, '_navigation_b', $_POST['_navigation_b'] );
    } else {
        delete_post_meta( $post_id, '_navigation_b' );
    }
}
add_action( 'save_post', 'save_custom_meta_field' );


推荐阅读