php - 如果 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>
这没有效果,我不确定这是否是因为编码错误,我在错误的地方输入了它,我需要做其他事情以及这个编码或所有内容的组合加上更多。
也不确定这是否会在显示另一个时隐藏一个?
请通过说明所需的任何代码以及需要输入的确切位置来提供帮助。
谢谢,迈克尔
解决方案
有几种方法可以解决这个问题。您可以按照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' );
推荐阅读
- nfc - 如何在 Mifare Desfire EV2 NFC 徽章上编写应用程序
- angular - 在 angular jasmine karma 测试中触发 dragstart 事件
- flutter - Flutter - FutureBuilder - 搜索
- c# - 根据 C# 中的某些条件管理列表中的项目
- python - 通过在 numpy 1D 数组中应用数学/逻辑更快地获得每条尾巴 - 消除无穷大
- python - 向 ipywidgets.datepicker 添加约束,只允许两个日期之间的值
- java - 如何以编程方式在 Java Web 应用程序中执行未编译的 testNg 测试用例?
- android - 如何在 Kotlin / Android 应用程序中重用文件值
- vue.js - 转到子路由不会保持 VueX 状态
- html - 如何在移动设备上为 contenteditable 元素启用自动大写