欢迎光临
请一秒记住我们的网址:www.xinfangs.com !

WordPress 菜单添加自定义选项打造超级菜单

时间煮雨阅读(759)


最近疫情期间静止在家,终于有时间研究这个超级菜单,上篇是 用小工具创建 WordPress 超级菜单 ,再介绍一个通过为 WordPress 菜单添加自定义选项,再利用短代码打造超级菜单的方法,废话不说直接上代码。

将代码添加到当前主题函数模板 functions.php 中:

// 设置添加字段
    function zm_menu_custom_fields( $item_id, $item ) {
    	$menu_code = get_post_meta( $item_id, 'zm_menu_code_checkbox', true );
    	$menu_shortcode = get_post_meta( $item_id, 'zm_menu_shortcode', true );
    	?>
 
    	<p class="zm-menu-code-label description" style="margin: 10px 0">
    		<label for="zm-menu-code-<?php echo $item_id; ?>" >
    			<input type="checkbox" id="zm-menu-code-<?php echo $item_id; ?>" name="zm_menu_code[<?php echo $item_id; ?>]" <?php checked( $menu_code, true ); ?> />
    			为顶级菜单添加CSS类(仅在顶级菜单勾选)
    		</label>
    	</p>
 
    	<p class="zm-menu-shortcode-label description">
    		<label for="zm-menu-shortcode-<?php echo $item_id; ?>">
    			输入短代码(仅在菜单子项目中使用)
    		</label>
    		<input type="hidden" class="nav-menu-id" value="<?php echo $item_id; ?>" />
    		<div class="logged-input-holder">
    			<input type="text" name="zm_menu_shortcode[<?php echo $item_id; ?>]" id="zm-menu-shortcode-<?php echo $item_id ;?>" value="<?php echo esc_attr( $menu_shortcode ); ?>" style="width: 100%;">
    		</div>
    	</p>
    	<?php
    }
 
    add_action( 'wp_nav_menu_item_custom_fields', 'zm_menu_custom_fields', 10, 2 );
 
    // 保存字段
    function zm_save_menu_custom_item_meta( $menu_id, $menu_item_db_id ) {
    	$button_value = ( isset($_POST['zm_menu_code'][$menu_item_db_id] ) && $_POST['zm_menu_code'][$menu_item_db_id] == 'on' ) ? true : false;
    	update_post_meta( $menu_item_db_id, 'zm_menu_code_checkbox', $button_value );
 
    	if ( isset( $_POST['zm_menu_shortcode'][$menu_item_db_id] ) ) {
    		$sanitized_data = sanitize_text_field( $_POST['zm_menu_shortcode'][$menu_item_db_id] );
    		update_post_meta( $menu_item_db_id, 'zm_menu_shortcode', $sanitized_data );
    	} else {
    		delete_post_meta( $menu_item_db_id, 'zm_menu_shortcode' );
    	}
    }
 
    add_action( 'wp_update_nav_menu_item', 'zm_save_menu_custom_item_meta', 10, 2 );
 
    // 前端输出
    function zm_menu_custom_output( $title, $item ) {
    	if( is_object( $item ) && isset( $item->ID ) ) {
    		$menu_shortcode = get_post_meta( $item->ID, 'zm_menu_shortcode', true );
 
    		// 输出菜单标题,可以删除
    		if ( ! empty( $menu_shortcode ) ) {
    			$title = '<span class="zm-menu-custom-title">'.$title.'</span>';
    		}
 
    		// 输出短代码
    		if ( ! empty( $menu_shortcode ) ) {
    			$title .= '<span class="show-menu-shortcode">' . do_shortcode( $menu_shortcode ) . '</span>';
    		}
    	}
 
    	return $title;
    }
 
    add_filter( 'nav_menu_item_title', 'zm_menu_custom_output', 10, 2 );
 
    // 添加CSS类
    function zm_menu_custom_add_class( $classes, $menu_item ) {
    	$menu_code = get_post_meta( $menu_item->ID, 'zm_menu_code_checkbox', true );
    	$menu_shortcode = get_post_meta( $menu_item->ID, 'zm_menu_shortcode', true );
 
    	// 为顶级菜单添加CSS类
    	if ( ! empty( $menu_code ) ) {
    		$classes[] = 'zm-menu-code';
    	}
    	// 为子菜单添加CSS类
    	if ( ! empty( $menu_shortcode ) ) {
    		$classes[] = 'zm-menu-shortcode';
    	}
 
    	return $classes;
    }
    add_filter( 'nav_menu_css_class', 'zm_menu_custom_add_class', 10, 2 );

上述,只是基本代码,并加了简单的注释,还需要编写短代码及相应的样式。

举一反三,能添加短代码,当然也能添加更多的自定义选项设置。具体效果可以参阅我主题的超级菜单。如果不想折腾代码可以安装相似功能的插件:WP Menu Custom Fields

不过用插件,最后也需要折腾代码,因为在原菜单中强行加入自定义内容,不重写样式是肯定不行的。

WordPress 二级子目录怎么设置伪静态

时间煮雨阅读(480)

宝塔伪静态中,我们选择自定义规则,把下面代码复制进去,并修改二级目录名称即可。

location /二级目录名称/ {
index index.HTML index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /二级目录名称/index.php;
}
}

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

WordPress 主题侧边栏随窗口浮动

时间煮雨阅读(802)


现在大部分 WordPress 主题其实都自带侧边栏随窗口浮动功能,但这类需求依然存在,今天小编教你如何不用 WordPress 插件轻松实现。

操作流程:

将下面的 javascript 代码插入到当前 WordPress 主题头部 header.php 模版中。修改其中的“#sidebar”为 WordPress 主题侧边选择器名称;根据不同的主题头部模版高度,适当调整其中的数字“368”。
<script type="text/javascript">
   var documentHeight = 0;
   var topPadding = 15;
   $(function () {
      var offset = $("#sidebar").offset();
      documentHeight = $(document).height();
      $(window).scroll(function () {
         var sideBarHeight = $("#sidebar").height();
         if ($(window).scrollTop() > offset.top) {
            var newPosition = ($(window).scrollTop() - offset.top) + topPadding;
            var maxPosition = documentHeight - (sideBarHeight + 368);
            if (newPosition > maxPosition) {
               newPosition = maxPosition;
            }
            $("#sidebar").stop().animate({
               marginTop: newPosition
            });
         } else {
            $("#sidebar").stop().animate({
               marginTop: 0
            });
         };
      });
   });
</script>

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

WordPress 如何在文章段落后添加自定义内容

时间煮雨阅读(478)

如果想在 WordPress 文章段落后添加自定义内容,比如在文章第二段后添加广告,可以尝试用下面的代码:

// 在文章第二段之后插入内容
    add_filter( 'the_content', 'prefix_insert_post_ads' );
    function prefix_insert_post_ads( $content ) {
    	$ad_code = '<div>添加的文字</div>';
    	if ( is_single() && ! is_admin() ) {
    		return prefix_insert_after_paragraph( $ad_code, 2, $content );
    	}
    return $content;
    }
 
    // 主要函数
    function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
    	$closing_p = '</p>';
    	$paragraphs = explode( $closing_p, $content );
    	foreach ($paragraphs as $index => $paragraph) {
    		if ( trim( $paragraph ) ) {
    			$paragraphs[$index] .= $closing_p;
    		}
    		if ( $paragraph_id == $index + 1 ) {
    			$paragraphs[$index] .= $insertion;
    		}
    	}
    	return implode( '', $paragraphs );
    }

分别在段落 2、4、6 后面添加不同的内容

 add_filter( 'the_content', 'add_ads_to_content' );
    function add_ads_to_content( $content ) {
    	$ads = array(
    		2 =>  'ad code 1', // paragraph_id => ad_code
    		4 => 'ad code 2', // paragraph_id => ad_code
    		6 => 'ad code 3' // paragraph_id => ad_code
    	);
 
    	if ( is_single() && ! is_admin() ) {
    		foreach ($ads as $paragraph_id => $ad_code) {
    			$content = prefix_insert_after_paragraph( $ad_code, $paragraph_id, $content );
    		}
    	}
    	return $content;
    }
 
    function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
    	$closing_p = '</p>';
    	$paragraphs = explode( $closing_p, $content );
    	foreach ($paragraphs as $index => $paragraph) {
    		if ( trim( $paragraph ) ) {
    			$paragraphs[$index] .= $closing_p;
    		}
    		if ( $paragraph_id == $index + 1 ) {
    			$paragraphs[$index] .= $insertion;
    		}
    	}
    	return implode( '', $paragraphs );
    }

如果只显示在某个分类文章中添加,也可以这么写

add_filter( 'the_content', 'prefix_insert_post_ads' );
    function prefix_insert_post_ads( $content ) {
    	$ad_code = '<div>自定义文字</div>';
    		if ( is_single() && ! is_admin() && in_category('29') ) {
    		return prefix_insert_after_paragraph( $ad_code, $content );
    	}
    	return $content;
    }
 
 
    function prefix_insert_after_paragraph( $insertion, $content ) {
    	$closing_p = '</p>';
    	$paragraphs = explode( $closing_p, $content );
    	$paragraph_id = round(count($paragraphs) / 2);
    	foreach ($paragraphs as $index => $paragraph) {
    		if ( trim( $paragraph ) ) {
    			$paragraphs[$index] .= $closing_p;
    		}
    		if ( $paragraph_id == $index + 1 ) {
    		$paragraphs[$index] .= $insertion;
    		}
    	}
    	return implode( '', $paragraphs );
    }
WordPress 如何在一定字数之后添加自定义内容
使用下面的代码,可以方便地在 WordPress 文章一定字数之后添加自定义内容。使用下面的代码,可以方便地在 […]

SuperPWA – 让你的WordPress网站瞬间变成APP

时间煮雨阅读(718)


PWA 是 Progressive Web App 的英文缩写, 翻译过来就是渐进式增强 WEB 应用, 是 Google 在 2016 年提出的概念,2017 年落地的 web 技术。目的就是在移动端利用提供的标准化框架,在网页应用中实现和原生应用相近的用户体验的渐进式网页应用。我们可以在 Chrome 中安装,如图:

移动端也是会提示安装的,这个功能如何实现,如果你是用的 WordPress,那么只要一款插件就可以瞬间实现网站支持 PWA,这款插件就是 SuperPWA。wordpress 的插件后台有很多支持 PWA 的,不过 SuperPWA 用的人最多,使用也很简单,而且卸载插件也很干净,不写数据库,所以说这款插件让人稍微放心点。

一:安装

自己在 WordPress 后台的插件库中搜索 SuperPWA,即可找到:

大鸟估计中间这款 PWA 也不错,用的人也很多,不过我们还是用 SuperPWA,毕竟用过的,知道怎么搞。

二:设置

安装启用之后,我们需要设置插件了,最核心的要设置好应用图标和启动画面图标这两个:

应用图标:这将是您的应用程序安装在手机上的图标。必须是 PNG 完全相同的图像 192x192 像素。
启动画面图标:此图标将显示在支持的设备上的应用程序的初始屏幕上。必须是 PNG 完全相同的图像 512x512 像素。
应用名称这些要写成自己网站名,其他的都是默认设置就可以了,设置好之后是这个样子的:

设置好之后,保存,插件我自动帮助我们的 wordpress 网站生成支持 PWA 应用。就是大鸟一开始介绍的样子,可以在浏览器中安装。

三:ADD-ONS

我们看到插件还有一个 add-ons 选项,这里可以酌情选择,比如选择苹果触摸图标:如图:

当然,都不选择也没关系。随意、随意、随意!

四:效果

PC 端安装好的效果:

安装好之后,就会在桌面生成一个的 APP。

移动端:用 chrome 打开网站之后,会在底部跳出安装的选项:

选择安装即可,之后会在手机桌面生成一个 APP,额,感觉还不错。

五:总结

目前有很多博客和网站都支持了 PWA,Wordpress 站点支持 PWA 还是很简单的,下载一个 PWA 插件即可,如果非 WordPress 站点,那么就的自己去设置了。

至于想深入了解 PWA,自己去搜索文档查看吧,虽然 PWA 很有意思,但也没想象中的那么好,不过玩玩也是可以的。

WordPress插件smartideo支持插入B站视频

时间煮雨阅读(733)


Smartideo 2 是一个全新的版本。它改进了引用方式,对支持 iframe 引用的视频网站直接采用 iframe 的方式引用;增加了播放器响应式的支持,在不同设备的屏幕下调整到最佳的播放器大小,使页面更加和谐。这两项改进,解决了开启 CDN 缓存的博客出现渲染出来的播放器跨屏出现错乱的问题,这只是顺带解决的,更重要的是让跨屏的播放体验更加友好了,在各种设备越来越多的今天,跨屏体验是非常非常重要滴~

Smartideo 是为 WordPress 添加对在线视频支持的一款插件(支持手机、平板等设备HTML5播放)。 目前支持优酷、搜狐视频、土豆、56、腾讯视频、新浪视频、酷6、华数、乐视、YouTube 等网站。

直接粘贴视频播放页完整的URL到编辑器(单独一行),就可以加载视频播放器。

以上介绍摘自原作者。

作者上一次更新是去年等9月份,之后也没更新,目前b站的视频添加后无法播放。

最近,我们修复了插件b站视频的问题,有需要的盆友可自取食用。

https://github.com/pcdotfan/smartideo

b 站的视频,要在本站播放,需要按以下设置:

请一秒记住我们的网址:www.xinfangs.com !

去投稿去留言