WordPress – 嗨软 https://ihacksoft.com/archive 分享最好用的常用软件 Tue, 22 Nov 2022 02:41:09 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.9.26 WordPress 文章中植入视频并自动播放的代码 https://ihacksoft.com/archive/1441.html https://ihacksoft.com/archive/1441.html#respond Fri, 11 Feb 2022 08:01:54 +0000 https://ihacksoft.com/?p=2179   今天要在 WordPress 一篇文章中放入一段 MP4 视频,因为文件比较小,才100多K,就想设置让它自动播放。这里我们需要使用 Video 标签,也就是如下代码:

<video src=“你的视频地址 controls=“controls” width=“宽度” height=“高度”></video>

而video标签有一些参数需要你来了解:
autoplay:出现该属性意味着视频在就绪后将自动播放,用法:autoplay=”autoplay”
controls:出现该属性意味着向用户显示控件,如播放按钮等,用法:controls=”controls”
height:设置高度
width:设置宽度
loop:自动重播,用法:loop=”loop”
preload:视频在页面加载时进行加载并预备播放,用法:preload=”auto” – 当页面加载后载入整个视频;preload=”meta” – 当页面加载后只载入元数据;preload=”none” – 当页面加载后不载入视频。注意:若使用了autoplay,则忽略preload
src:要播放视频的url

  最后我使用的代码为:

<div style="text-align: center;"><video src="https://cdn.ihacksoft.com/2022/63.mp4" controls=“controls” autoplay=”autoplay” loop=”loop”></video></div>
]]>
https://ihacksoft.com/archive/1441.html/feed 0
WordPress 隐藏后台管理员登录地址最简单的方法 https://ihacksoft.com/archive/1430.html https://ihacksoft.com/archive/1430.html#respond Wed, 02 Feb 2022 12:31:17 +0000 https://ihacksoft.com/?p=2168   WordPress 做为世界上最受欢迎的建站程序,它的系统安全性自然是母庸置疑,但其后台的管理员登录地址始终是众所周知的,如果能隐藏 WordPress 的默认登录地址,安全性必定更高。下面提供一个最简单的实现方法:

  修改你当前使用的主题目录下的文件 functions.php 将以下代码加入到其最后:

add_action('login_enqueue_scripts', 'tb_wp_login_protection');
function tb_wp_login_protection(){
    if( !isset($_GET['hehe']) ){
        header( 'Location: ' . home_url() );
        exit;
    }
}

  其中的 hehe 改成你需要的字符,之后登录的地址便是:网站域名/wp-login.php?heh,或者是:网站域名/wp-admin?hehe,如果不按照以上地址访问,将直接跳转到网站首页。忘记了这个 hehe 怎么办?很简单,使用FTP连接服务器查看这个文件 functions.php 就可以了。

]]>
https://ihacksoft.com/archive/1430.html/feed 0
WordPress 服务器CPU资源占用高的原因分析和解决方法 https://ihacksoft.com/archive/1387.html https://ihacksoft.com/archive/1387.html#respond Fri, 31 Dec 2021 03:04:14 +0000 https://ihacksoft.com/?p=2116   当前,WordPress 是全世界最受欢迎的建站程序,功能强大,插件丰富,更新速度也很快。如果你细心观察,就会发现,随着新版本的不断推出,体积也变得越来越大了。相对于同类程序,CPU 资源占用也是非常高的。如果你安装了很多插件,加上随机文章、相关文章等,那么占用的资源将会更加大,很多时候会导致服务器 CPU 占用率飙升。那么,如何如何处理WordPressCPU占用100%很高的问题?

一、WordPress CPU占用过高的常见原因

1、过多插件的使用

  在利用WordPress建立独立网站的时候,很多站长喜欢开启各种WordPress插件,由于开发者并非是同一人,往往造成某些插件并不能合理的兼容,从而导致CPU占用过高。

2、疯狂的网络爬虫

  我们知道互联网上充斥着很多网络爬虫,他们有效针对全网,进行爬行和抓取,特别是一些管理工具的爬虫,异常疯狂,它会持续不断的抓取站点,如果网站的服务器性能不高,那么很容易拖垮服务器。因此,你有必要通过网站日志分析,查看那些没有必要的爬虫,并且封禁这个IP。

3、用户垃圾评论

  如果你的网站具有一定的权重,那么就会被一些营销推广公司进行不法利用,比如:批量的进行评论文章,这样导致服务器瞬间的写入,很容易造成WordPress站点CPU突然升高。

4、网站被持续攻击

  如果你经常遭遇黑网站,持续的攻击,那么你的站点CPU占用频率,一定会持续走高,特别是被挂马以后,经常会出现WordPress高CPU使用率的情况。

WordPress CPU占用过高的解决思路

1、精简网站插件

  建立避免使用过多的网站插件,如果实在有必要采用一些特定插件,那么你需要与作者沟通,查看是否与现有插件产生冲突。

2、定期清理数据库

  如果你的数据库中由于长期的读写产生很多冗余的数据,使得数据库过于臃肿,那么定期合理的清理这些数据垃圾,还是有利于改善WordPress站点的体验。

3、有效控制垃圾评论

  下载安装禁止垃圾评论插件,有效控制垃圾评论。从SEO的角度,当然越多评论越好,但你需要学会利用时间因子,更新网站动态,同时如果实在需要开启评论,那么一定要限定评论数量。

4、屏蔽无用网络爬虫

  如果你是在国内做百度SEO,那么你理论上可以屏蔽谷歌与bing的蜘蛛,特别是一些外链分析工具的蜘蛛,你需要在Robots协议中封禁特定的蜘蛛。这个需要根据网站自身实际情况,合理选择。

]]>
https://ihacksoft.com/archive/1387.html/feed 0
WordPress 相关文章纯代码:速度最快、效率最高的实现方法 https://ihacksoft.com/archive/1385.html https://ihacksoft.com/archive/1385.html#respond Thu, 30 Dec 2021 04:30:55 +0000 https://ihacksoft.com/?p=2114   前段时间给自己的 WordPress 换了个主题,用了几天才发现文章内页里缺少了“相关文章”。这个模块还是非常重要的,不管是从访客的观感体验,还是从 SEO 角度而言都是。

  关于相关文章的插件很多,不过本人不喜欢多装插件,能少则少,尽可能用纯代码去实现。而且这么个小功能去用插件就有点大材小用了,我们可以通过代码完成这样的一个小功能。下面是 iHackSoft.com 整理的多种代码实现方法,并且最后还有代码执行速度测试,可优选出效率最高的一种方法。

方法一:标签相关

  首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的WordPress相关文章插件都是使用的这个方法。下面是实现的代码:

<ul id="tags_related">
<?php
global $post;
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags) {
foreach ($post_tags as $tag) {
// 获取标签列表
$tag_list[] .= $tag->term_id;
}
// 随机获取标签列表中的一个标签
$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];
// 该方法使用 query_posts() 函数来调用相关文章,以下是参数列表
$args = array(
'tag__in' => array($post_tag),
'category__not_in' => array(NULL), // 不包括的分类ID
'post__not_in' => array($post->ID),
'showposts' => 6, // 显示相关文章数量
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()) {
while (have_posts()) {
the_post(); update_post_caches($posts); ?>
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
}
else {
echo '<li>* 暂无相关文章</li>';
}
wp_reset_query();
}
else {
echo '<li>* 暂无相关文章</li>';
}
?>
</ul>

  使用说明:"不包括的分类ID" 指的是相关文章不显示该分类下的文章,将同行的 NULL 改成文章分类的ID即可,多个ID就用半角逗号隔开。因为这里限制只显示6篇相关文章,所以不管给 query_posts() 的参数 tag__in 赋多少个值,都是只显示一个标签下的 6 篇文章,除非第一个标签有1篇,第二个标签有2篇,第三个有3篇。。。。。。所以如果这篇文章有多个标签,那么我们采取的做法是随机获取一个标签的id,赋值给 tag__in 这个参数,获取该标签下的6篇文章。

方法二:分类相关

  本方法是通过获取该文章的分类id,然后获取该分类下的文章,来达到获取相关文章的目的。

<ul id="cat_related">
<?php
global $post;
$cats = wp_get_post_categories($post->ID);
if ($cats) {
$args = array(
'category__in' => array( $cats[0] ),
'post__not_in' => array( $post->ID ),
'showposts' => 6,
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()) {
while (have_posts()) {
the_post(); update_post_caches($posts); ?>
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
}
else {
echo '<li>* 暂无相关文章</li>';
}
wp_reset_query();
}
else {
echo '<li>* 暂无相关文章</li>';
}
?>
</ul>

方法三:标签相关,SQL获取

  获取相关文章的原理与方法一相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts()。

<ul id="tags_related">
<?php
global $post, $wpdb;
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags) {
$tag_list = '';
foreach ($post_tags as $tag) {
// 获取标签列表
$tag_list .= $tag->term_id.',';
}
$tag_list = substr($tag_list, 0, strlen($tag_list)-1);
$related_posts = $wpdb->get_results("
SELECT DISTINCT ID, post_title
FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
WHERE {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
AND ID = object_id
AND taxonomy = 'post_tag'
AND post_status = 'publish'
AND post_type = 'post'
AND term_id IN (" . $tag_list . ")
AND ID != '" . $post->ID . "'
ORDER BY RAND()
LIMIT 6");
// 以上代码中的 6 为限制只获取6篇相关文章
// 通过修改数字 6,可修改你想要的文章数量
if ( $related_posts ) {
foreach ($related_posts as $related_post) {
?>
<li><a href="<?php echo get_permalink($related_post->ID); ?>" rel="bookmark" title="<?php echo $related_post->post_title; ?>"><?php echo $related_post->post_title; ?></a></li>
<?php }
}
else {
echo '<li>暂无相关文章</li>';
}
}
else {
echo '<li>暂无相关文章</li>';
}
?>
</ul>

方法四:分类相关,SQL获取

  获取相关文章的原理与方法二相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts()。

<ul id="cat_related">
<?php
global $post, $wpdb;
$cats = wp_get_post_categories($post->ID);
if ($cats) {
$related = $wpdb->get_results("
SELECT post_title, ID
FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
AND {$wpdb->prefix}term_taxonomy.taxonomy = 'category'
AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
AND {$wpdb->prefix}posts.post_status = 'publish'
AND {$wpdb->prefix}posts.post_type = 'post'
AND {$wpdb->prefix}term_taxonomy.term_id = '" . $cats[0] . "'
AND {$wpdb->prefix}posts.ID != '" . $post->ID . "'
ORDER BY RAND( )
LIMIT 6");
if ( $related ) {
foreach ($related as $related_post) {
?>
<li>* <a href="<?php echo get_permalink($related_post->ID); ?>" rel="bookmark" title="<?php echo $related_post->post_title; ?>"><?php echo $related_post->post_title; ?></a></li>
<?php
}
}
else {
echo '<li>* 暂无相关文章</li>';
}
}
else {
echo '<li>* 暂无相关文章</li>';
}
?>
</ul>

方法五:作者相关

  该方法是获取该文章作者的其他文章来充当相关文章,代码如下:

<ul id="author_related">
<?php
global $post;
$post_author = get_the_author_meta( 'user_login' );
$args = array(
'author_name' => $post_author,
'post__not_in' => array($post->ID),
'showposts' => 6, // 显示相关文章数量
'orderby' => date, // 按时间排序
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()) {
while (have_posts()) {
the_post(); update_post_caches($posts); ?>
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
}
else {
echo '<li>* 暂无相关文章</li>';
}
wp_reset_query();
?>
</ul>

执行效率对比

  我们将用之前的一个php代码对以上各个相关文章代码执行时间进行测算,以便对以上各个的方法进行效率,给你的选择提供参考。以下是在同一篇文章中获取6篇相关文章,以上各方法最终测算的时间如下:

方法一:0.18067908287048 秒

方法二:0.057158946990967 秒

方法三:0.037126064300537 秒

方法四:0.045628070831299 秒

方法五:0.023991823196411 秒

]]>
https://ihacksoft.com/archive/1385.html/feed 0
WordPress 插入表格最简单的方法,无需插件! https://ihacksoft.com/archive/884.html https://ihacksoft.com/archive/884.html#respond Fri, 15 Nov 2019 03:32:45 +0000 https://ihacksoft.com/?p=1613   WordPress 发表文章时大部分情况其实用不到表格,但还是少不了,偶尔会用到。刚刚发文插入了一个表格,没有使用额外的插件,感觉最简单的方法就是:借用 Excel。

  在 Excel 编辑好表格之后,选中表格,并复制。这里要注意的是,多余的空格不要复制。然后粘贴到 WordPress 后台发文处,但是一定要粘贴到编辑器的“可视化”模式里。

  保存发表之后,前台就能看到了,但是有个问题,没有边框,文字也不居中,影响了美观。怎么办?靠 CSS!

  添加一些css代码来设置边框和文字居中,比如:

td,tr{border:1px solid #eee;text-align:center;padding:10px;}

  可以将以上代码加到网站后台的 custom css 中,然后保存,再刷新前台,就可以看到效果了!

  此外,你也可随意调节文字加粗加红等,并且在切换到编辑器的文本模式后,通过修改 width 和 height 调节表格的宽度、高度。

]]>
https://ihacksoft.com/archive/884.html/feed 0
WordPress guid 是什么以及重置 guid 的SQL语句 https://ihacksoft.com/archive/606.html https://ihacksoft.com/archive/606.html#respond Thu, 25 Apr 2019 08:41:52 +0000 https://ihacksoft.com/?p=1335   WordPress 数据库里的 wp-posts 表是最最核心的,里面存储了所有的文章,以及文章对应的很多属性。其中有一个 guid 字段,一直不知道它是干吗的。

  通过查找相关资料,guid 是唯一标识符(短链接),它记录了文章的最原始 URL 信息,似乎只在 WordPress 的 RSS 中用到,平时写文章没有任何影响。

  因为我合并了两个 WordPress,导致数据里出现了重复的 guid 值。虽然没有影响,但看着难受。为了能够让 guid 中记录的链接与站内文章的真实链接相对应,我们需要批量更新 guid 的值,使用下面的 SQL 语句亲测成功:

update wp_posts
set guid = concat('https://ihacksoft.com/?p=',ID)
where post_status = 'publish' and post_type = 'post'
]]>
https://ihacksoft.com/archive/606.html/feed 0
WordPress 隐藏加密文章部分内容,纯代码非插件! https://ihacksoft.com/archive/547.html https://ihacksoft.com/archive/547.html#respond Tue, 09 Apr 2019 03:17:29 +0000 https://ihacksoft.com/?p=1276   这个功能还是相当不错的,也许现在用不到,以后有可能用到。就是对 WordPress 文章的部分内容进行隐藏,如果需要访问,就必须输入密码,适合做 VIP 资源的分享。刚在某网站上看到,觉得应该留一份作为备用。纯代码功能,无需安装插件。

  打开主题的 functions.php 文件,找个合适的位置,加入以下代码:

// 输入密码查看文章内容
function password_protected_post($atts, $content=null){
    extract(shortcode_atts(array('key'=>null), $atts));
    if(isset($_POST['password_key']) && $_POST['password_key']==$key){
        return '
 
'.do_shortcode($content).'
'; }elseif(isset($_POST['password_key']) && $_POST['password_key']!=$key){ return ' '; }else{ return '
'; } } add_shortcode('pwd_protected_post','password_protected_post'); // 输入密码查看文章内容快捷按钮 // https://saodaye.com/wordpress/skill/1473.html function appthemes_add_pwd_protected_post() { if (wp_script_is('quicktags')){ ?>

  还可以美化一下,在主题的 CSS 文件中加入:

/** 输入密码查看文章内容 */
.password_protected_post_content{
 margin: 20px 0;
    padding: 0px;
//*    background: #f8f8f8; 背景 */
}
 
.password_protected_post_form{
 margin: 20px 0;
 height:52px;
 font-size:24px;
 text-align: center; 
}
 
.password_protected_post_form [type="password"]{
 float: left;
    width: 80%;
 height: 100%;
 display: block;
 padding: 5px 16px;
 line-height: 36px;
 color: #777; 
 background: #FCFCFC;
 border: 3px solid #f3f3f3;
 border-right: 0px;
 border-radius: 3px 0 0 3px;
 box-sizing: border-box;
}
 
.password_protected_post_form [type="submit"]{
 float: right;
    width: 20%;
 height: 100%;
 display: block;
 padding: 5px 16px;
 line-height: 36px;
 color: #fff;
 background: #5a6a7a;
 border: 3px solid #5a6a7a;
 border-left: 0px;
 border-radius: 0 3px 3px 0;
 box-sizing: border-box;
 cursor: pointer;
}
 
@media (max-width:560px){
 .password_protected_post_form{
 height:36px;
 font-size:14px;
 text-align: center;
 }
 .password_protected_post_form [type="password"]{
 padding: 3px 9px;
 line-height: 24px;
 }
 .password_protected_post_form [type="submit"]{
 padding: 3px 9px;
 line-height: 24px;
 }
}

  最后,在 WordPress 后台发表文章的时候,编辑器切换到文本模式即可看到“文章密码保护”按钮,点击2次即可实现部分内容加密。

]]> https://ihacksoft.com/archive/547.html/feed 0 WordPress 外链远程图片自动下载到本地,纯代码非插件! https://ihacksoft.com/archive/531.html https://ihacksoft.com/archive/531.html#respond Wed, 03 Apr 2019 07:49:03 +0000 https://ihacksoft.com/?p=1260   有时候会转载别的的文章,但是那篇文章里除了文字外,还包含了图片。如果图片少可以一张张下载,但是一多的话,恐怕没有这个时间和精力。怎么办?如果你使用的是万能的 WordPress,那么答案是:轻松的!轻松可以将对方网站的图片抓取并自动保存到本地服务器上,简称远程图片下载。

  WordPress 插件实在太多了,但我个人不是很喜欢用,能用代码实现的尽量用代码。这里提供一段代码用于远程图片自动保存,将其植入 functions.php 文件即可。代码不难,懂点 PHP 语言的基本上都能看懂,并且进行修改,以适应个性化要求,比如保存的文件名、路径等。

//外链图片自动保存到本地
add_filter('content_save_pre', 'auto_save_image');
function auto_save_image($content) {
$upload_path = '';
$upload_url_path = get_bloginfo('url');
//上传目录
if (($var = get_option('upload_path')) !=''){
$upload_path = $var;
} else {
$upload_path = 'wp-content/uploads';
}
if(get_option('uploads_use_yearmonth_folders')) {
$upload_path .= '/'.date("Y",time()).'/'.date("m",time());
}
//文件地址
if(($var = get_option('upload_url_path')) != '') {
$upload_url_path = $var;
} else {
$upload_url_path = bloginfo('url');
}
if(get_option('uploads_use_yearmonth_folders')) {
$upload_url_path .= '/'.date("Y",time()).'/'.date("m",time());
}
require_once ("../wp-includes/class-snoopy.php");
$snoopy_Auto_Save_Image = new Snoopy;
$img = array();
//以文章的标题作为图片的标题
if ( !empty( $_REQUEST['post_title'] ) )
$post_title = wp_specialchars( stripslashes( $_REQUEST['post_title'] ));
$text = stripslashes($content);
if (get_magic_quotes_gpc()) $text = stripslashes($text);
preg_match_all("/ src=(\"|\'){0,}(http:\/\/(.+?))(\"|\'|\s)/is",$text,$img);
$img = array_unique(dhtmlspecialchars($img[2]));
foreach ($img as $key => $value){
set_time_limit(180); //每个图片最长允许下载时间,秒
if(str_replace(get_bloginfo('url'),"",$value)==$value&&str_replace(get_bloginfo('home'),"",$value)==$value){
//判断是否是本地图片,如果不是,则保存到服务器
$fileext = substr(strrchr($value,'.'),1);
$fileext = strtolower($fileext);
if($fileext==""||strlen($fileext)>4)
$fileext = "jpg";
$savefiletype = array('jpg','gif','png','bmp');
if (in_array($fileext, $savefiletype)){
if($snoopy_Auto_Save_Image->fetch($value)){
$get_file = $snoopy_Auto_Save_Image->results;
}else{
echo "error fetching file: ".$snoopy_Auto_Save_Image->error."
"; echo "error url: ".$value; die(); } $filetime = time(); $filepath = "/".$upload_path;//图片保存的路径目录 !is_dir("..".$filepath) ? mkdirs("..".$filepath) : null; //$filename = date("His",$filetime).random(3); $filename = substr($value,strrpos($value,'/'),strrpos($value,'.')-strrpos($value,'/')); //$e = '../'.$filepath.$filename.'.'.$fileext; //if(!is_file($e)) { // copy(htmlspecialchars_decode($value),$e); //} $fp = @fopen("..".$filepath.$filename.".".$fileext,"w"); @fwrite($fp,$get_file); fclose($fp); $wp_filetype = wp_check_filetype( $filename.".".$fileext, false ); $type = $wp_filetype['type']; $post_id = (int)$_POST['temp_ID2']; $title = $post_title; $url = $upload_url_path.$filename.".".$fileext; $file = $_SERVER['DOCUMENT_ROOT'].$filepath.$filename.".".$fileext; //添加数据库记录 $attachment = array( 'post_type' => 'attachment', 'post_mime_type' => $type, 'guid' => $url, 'post_parent' => $post_id, 'post_title' => $title, 'post_content' => '', ); $id = wp_insert_attachment($attachment, $file, $post_parent); $text = str_replace($value,$url,$text); //替换文章里面的图片地址 } } } $content = AddSlashes($text); remove_filter('content_save_pre', 'auto_save_image'); return $content; } function mkdirs($dir) { if(!is_dir($dir)) { mkdirs(dirname($dir)); mkdir($dir); } return ; } function dhtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = dhtmlspecialchars($val); } }else{ $string = str_replace('&', '&', $string); $string = str_replace('"', '"', $string); $string = str_replace('<', '<', $string); $string = str_replace('>', '>', $string); $string = preg_replace('/&(#\d;)/', '&\1', $string); } return $string; }
]]>
https://ihacksoft.com/archive/531.html/feed 0
WordPress 移动端主题自动切换(插件+代码) https://ihacksoft.com/archive/527.html https://ihacksoft.com/archive/527.html#respond Tue, 02 Apr 2019 01:47:43 +0000 https://ihacksoft.com/?p=1256   上周花了点时间学习研究 WordPress 的手机端访问,准确地说,是移动端的访问。其中涉及到不少新的知识,包括 HTML5、响应式设计、自适应框架 Bootstrap 等等,这些较新前沿的技术真的应该花点时间好好学习一下,否则就会落后于这个移动化的时代。

  HTML5 持续火热,随着微信公众号、朋友圈、微博等途径可导入大量阅读量,博客网站移动端自适应势在必行。本文介绍基于wordpress的网站如何实现移动化。

  响应式网站设计(Responsive Web design)的理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相对应的布局。
优点:一套代码,能够适应不同分辨率设备访问,易于维护。
缺点:受限于同一套HTML结构,导致很多差异化布局不好进行扩展,对于小屏设备往往采用隐藏方式减少内容。

  自适应框架如 Bootstrap、UIKit、Adobe Edge Inspect、Foundation、Responsablecss 等。响应式布局的实现方式为通过 CSS3 的媒体查询 Media Queries,针对不同分辨率做断点,使用不同的样式。



 

WordPress 插件

安装合适的 WordPress 主题插件,优缺点如下。
优点:使用简单,安装插件,再选择合适的移动端主题即可,无需开发。
缺点:受限于主题,很难再做自定义扩展。
常见的移动主题插件如下,其中 WPTouch 插件非常强大:
WPtouch
WordPress Mobile Pack
MobilePress
Any Mobile Theme Switcher
WordPress Mobile Themes
Device Theme Switcher

差异处理

通过读取用户访问的 Agent,判断系统及分辨率,再做不同的展现及处理。一般使用 WordPress 提供的 wp_is_mobile 函数来判断是不是移动端访问,来加载不同的HTML段、CSS或JS。
优点:通过判断设备,在一套代码中做差异化处理,达到适应设备显示的目的。
缺点:代码耦合较深,不易于维护及扩展。
从 WordPress3.4 版本开始,WordPress 已支持 wp_is_mobile 函数

主题切换代码

在 \wp-content\plugins 目录新建 mobile_switch_theme.php 文件(或放入新文件夹中),可以在代码中指定主题文件名,最后再 WordPress 后台启用插件即可。

]]>
https://ihacksoft.com/archive/527.html/feed 0
WordPress ID 重排代码文件 – 打开即可重新排列,亲测无误! https://ihacksoft.com/archive/521.html https://ihacksoft.com/archive/521.html#respond Fri, 29 Mar 2019 03:32:50 +0000 https://ihacksoft.com/?p=531   WordPress ID 连续问题确实很麻烦,除了文章修订历史和自动保存记录外,还有个自动草稿。那天检查了一下我数据库 wp-posts 表,发现 ID 已乱。赶紧用 SQL 语句查了下,看看有哪些未发布的文章记录:

SELECT * 
FROM wp_posts
WHERE  `post_status` !=  'publish'

  显示出来有 5 条,全部是 post_status 为 auto-draft 的记录,即自动草稿!修订历史和自动保存问题我已经解决了,网上方法很多。但是这个 auto-draft 一直没有解决,之前 WordPress 3.x 轻松搞定,现在新版有些麻烦。但是方法是有的,只是我不想去修改 WordPress 源文件。

  有些人说不用 Post ID 作为文章 URL 不就行了,就不用管这些额外产生的文章 ID 了。我其实用的本来就不是 Post ID,而是 Post name,但即便如何,我也不想数据库里产生这么多无用的垃圾记录,不是强不强迫症的问题,占用空间倒不说,等数据量大了会影响性能。

  于是用 SQL 删除所有的 auto-draft:

DELETE FROM `wp_posts` WHERE `post_status` = 'auto-draft';

  最后进行 ID 重排,将以下代码保存为 .php 文件,上传到网站根目录,运行即可,几次亲测无误!

query( 'update ' . $wpdb->prefix .'posts set ID = ' . $convertedrows . ' where ID = ' . $id );
 $wpdb->query( 'update ' . $wpdb->prefix .'term_relationships set object_id = ' . $convertedrows . ' where object_id = ' . $id );
 $wpdb->query( 'update ' . $wpdb->prefix .'postmeta set post_id = ' . $convertedrows . ' where post_id = ' . $id );
 $wpdb->query( 'update ' . $wpdb->prefix .'comments set comment_post_ID = ' . $convertedrows . ' where comment_post_ID = ' . $id );
 $convertedrows++;
}
/** ID默认由1开始 */
$convertedrows = 1;
/** 查询数据库文章表所有记录 */
$sql_query = 'SELECT ID FROM ' . $table_prefix . 'posts ORDER BY ID ASC';
$all_post_ids = $wpdb->get_results( $sql_query );
/** 有返回值时则执行循环 */
if ( is_array( $all_post_ids ) ) {
 foreach ( $all_post_ids as $post_id ) {
  change_post_id( $post_id->ID );
 }
}
/** 重新设置文章ID自动增加的起点 */
$wpdb->query('alter table ' . $table_prefix .'posts AUTO_INCREMENT = ' . $convertedrows);
echo 'Total:'. $convertedrows .', It\'s ok!!! by www.Hack520.com ';
?>
]]>
https://ihacksoft.com/archive/521.html/feed 0