如果URL包含特定字符串,如何隐藏/显示某些元素/ div?

时间:2019-01-28 13:31:32

标签: php wordpress

我有一大堆页面(第1页)需要显示特定的导航栏,还有第二大页面集(第2页)需要显示不同的导航栏。

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

下面是我尝试过的jQuery。

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

这没有效果,我不确定这是否是因为编码错误,我在错误的位置输入了编码,我需要做一些其他事情,除了编码之外,还要结合其他所有内容。

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

请通过说明所需的任何代码以及确切在何处进行输入来提供帮助。

谢谢, 迈克尔

2 个答案:

答案 0 :(得分:0)

也许可以在PHP中这样尝试:

<?php 

$page = array("page1/" /*, "page2/", "page3/", "all other pages" */ );    
if(in_array(strpos($url, $page))

{echo '#page1-navigation-bar';}

        else

{echo '#page2-navigation-bar';}

?>

答案 1 :(得分:0)

有两种方法可以解决此问题。您可以按照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' );