标签 WordPress主题 下的文章

最近主题想实现一个分享链接自动解析 URL,并以卡片形式展示目标链接内容的功能,几经调研发现这个需求早在10多年前就已经有相应的标准了,它就是有 FaceBook 提出的 OpenGraph 协议(开放图谱协议)

OpenGraph是什么

我们知道,构建一个网站采用的技术和实现方式并不相同,普通方法无法完美地解析目标页面的基本信息,导致没有 OpenGraph 协议时分享的链接展示形式相当有限,而且看起来没有非常大的点击欲望。

OpenGraph 协议简单来说就是向网页 head 下插入一些统一标准的 meta 元信息,支持标题、描述、缩略图等信息,大大方便了第三方网站和应用地解析出目标页面的基本信息,并加以优化展示链接的目标页面,使其点击率可以大大提升。

比较直观的讲就是,网页只需要加入 OpenGraph 元信息,当页面被分享到微博、FB、Twitter 时,URL 会被智能地解析成一个非常精美地卡片显示:

实际应用

了解了这么多,我们自己的网站和应用如果想要优化链接展示让然也可以读取 OpenGraph 元信息。

其中PHP就可以使用 get_meta_tags 方法从一个URL中提取所有的 meta 标签 content 属性,并返回一个数组:

<?php
    $tags = get_meta_tags('https://biji.io/about');

    // 注意所有的键(key)均为小写,而键中的‘.’则转换成了‘_’。
    echo $tags['title'];
    echo $tags['description'];
    echo $tags['image'];
    echo $tags['geo_position'];
?>

WordPress如何添加OpenGraph元信息

// 附加元信息
function head_append_meta() {
    $metas = [
        'og:title'     => get_the_title(),
        'og:site_name' => get_bloginfo( 'name' ),
        'og:type'      => 'website',
    ];
    if ( is_single() || is_page() ) {
        $metas['og:url']         = get_permalink();
        $metas['og:description'] = get_the_excerpt();
        if ( has_post_thumbnail() ) {
            $meta_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
            if ( $meta_image_url ) {
                $metas['og:image'] = $meta_image_url[0];
            }
        }
        $metas['og:type'] = 'article';
    }
    foreach ( $metas as $key => $value ) {
        echo '<meta property="' . $key . '" content="' . $value . '" />' . "\n";
    }
}

add_action( 'wp_head', 'head_append_meta', 1 );

当然,你也可以访问 The Open Graph protocol (ogp.me) 来了解所有 OpenGraph 元信息和其含义,并灵活地运用到你的网站上。

可以 FaceBook 的分享调试器来调试和预览 OpenGraph 元信息展示能力:分享调试器 - Facebook 开发者

本文参考资料:

【WordPress教程】 什么是 Open Graph(property=”og:type”)_细说外贸推广_杭州 SEO 研究_ISEOer (rrdaj.com)
前端应该知道的:开放图谱协议(The Open Graph protocol) - SegmentFault 思否
The Open Graph protocol (ogp.me)

本来打算自用的主题,架不住隔三差五有小伙伴联系我,于是打算4月底发布它,但是这个月实在太忙了,下班回去又懒得开电脑,一拖再拖,直到明天要放假,所以今天不得不百忙中抽出一点时间糊弄一下大家。

没错,我就是单纯的加了一个更新推送,自己在本地测试了两遍,貌似是没啥问题,打包发出来。

主题介绍

  1. 极简、轻量化的设计风格
  2. 深度优化InstantClick的pjax效果
  3. 响应式布局,不依赖js的导航响应式
  4. ajax动态加载二维码
  5. 前台阅读模式切换(预计1.1.0版本)
  6. 强劲的性能优化
  7. Ajax无刷新评论、翻页
  8. 来自ViewImage驱动的极简灯箱(1kb)
  9. Lately驱动的时间格式化插件(800字节)

下载主题

WordPress版:前往Github下载

奇技淫巧

Tips1 - 创建SNS导航:

1.2.5版本改动:

新版已经使用创造狮提供的开源图标:草莓ICON 设置icon,请前往 http://chuangzaoshi.com/icon/ 获取对应图标的name,按照原方法填写即可

创建一个菜单,名字随意,添加一个自定义链接,普通icon参数如下:

如果是微信这种二维码,可以参考如下:

1.0.9版本开始主题已经上传到Github,更新日志请前往Github查阅:https://github.com/Tokinx/Adams/commits/master

说明:

主题自带更新推送,不建议直接在原主题上修改代码,否则更新后修改部分会被覆盖,建议使用子主题模式对主题进行二次开发。

欢迎广大侠义之士将本主题移植到其它平台,如果移植过程遇到问题,可以邮件联系。

最后,请保留主题版权。

enter image description here

按照惯例,先介绍一下亮点功能吧。

亮点功能

  1. 轻巧简洁的设计风格
  2. 轻量化的安装体积(仅100K左右)
  3. 全PJAX无刷新操作(欢呼吧)
  4. 响应式的布局(不再赘述,可以亲自体验一下)
  5. 前台多皮肤更换(cookie会保存设置)
  6. 强劲的性能优化(iDevise的优良框架)
  7. 随机图片Banner(如果你的环境无法打开banner请留言,下版修改)
  8. Ajax评论,剩下的亮点留给爱发现的你吧

获得主题

想着以后还会发布很多主题,于是我做了一个小程序,可以更方便的提供主题下载和其他服务,欢迎大家多多支持我的“笔记商店”,暂时还没有实际内容,如果你也是主题或插件开发者,欢迎你入驻这里,免费设计页面。

WordPress版:https://store.biji.io/item/idevs.html

欢迎广大能手移植到其他平台,免费提供技术支持。

主题声明

主题首次实验性的加入了版权保护机制,请不要擅自删除主题版权,否则可能会引发一系列奇怪的后果。

你可以将版权恢复即可正常使用主题,如果实在无法接受我们的版权保护方式,请尝试更换其他主题。

希望大家能够理解免费主题开发者对版权的在意程度,也非常感谢大家对主题和设计笔记的支持。

更新历史

2016.07.13
  • 第一版发布

使用说明

同iDevise主题,因为主题设置面板基本用不上几次,所以我没有对主题添加设置面板功能,而是把相关设置放到了个人资料里面。 友情链接和统计代码添加,请前往后台>用户>我的个人资料,最下方进行编辑,同时,文章和页面结束为止的介绍也是调用的个人资料,所以建议个人资料填写尽可能详细。

enter image description here

其实很早之前久开始整理这个主题了,但是一直有其它的事情在做,所以一直拖到现在才发布出来,不过赶得巧,就当做给大家的新年礼物吧。

亮点功能

  1. 简洁的设计风格(最大的亮点?好吧,初衷就是简洁)
  2. 轻量化的安装体积(仅62.3K,文件少了,功能却不少)
  3. 全PJAX无刷新操作(又一买点,优化的很好了,基本不会遇到什么问题)
  4. 响应式的布局(嗯,我的主题全都是响应式的)
  5. 个性的展示区域(文章和页面下面,好像很有biger)
  6. 强劲的性能优化(去掉了很多冗余代码,可能感受不到,但是强迫症会看源代码)
  7. 读者墙,新建页面填入【active num=72 size=70 days=730】字段自行替换“【】”为“[]”

下载主题

简单的制作了一个下载页,方便统计下载次数,也为了方便展示主题。

WordPress版:https://www.iyuren.com

妹Blog版:http://i.acg.vc/#!21   已失效

界面预览

主题声明

声明1:iDevise目前已经暂停维护,如没有出现重大Bug将不再进行后续更新和维护。

声明2:使用过程中如果遇到什么问题可以直接在此页面留言,但不保证解答全部问题。

声明3:iDevise的移植、衍生版本的主题及产品的使用问题请联系移植、修改作者,本博客不提供无偿答疑服务,请谅解。

更新历史
  • 2016年2月18日更新
    1. 修复了php7下无法正常使用的问题[重要]
    2. <li>修复了视网膜屏幕下,icon图片模糊的问题</li>
      
      <li>新增评论链接跳转</li>
      
      <li>更改了手机下icon样式</li>
      
      <li>其他细节改进 2016年2月25日更新</li>
      
  • 2016年2月25日更新
    1. 修复了php7.0.3下评论区域错误[重要]
    2. <li>移除了自带的jquery,改调用又拍云的公共库</li>
      
      <li>公共库如果加载失败,可以ajax评论,无法pjax页面 2016年3月3日更新</li>
      
  • 2016年3月3日更新
    1. 新增返回顶部功能
    2. <li>优化了pjax方式,更方便的控制非pjax链接 2016年3月4日更新</li>
      
  • 2016年3月4日更新
    1. 新增主题更新推送[重要]
    2. <li>精简主题体积,新版压缩包仅47kb</li>
      
      <li>道歉,由于版本控制不规范,上个版本出了一些问题,紧急推送</li>
      
  • 2016年3月13日更新
    1. 更换了文章列表翻页效果[重要]
    2. <li>修复了手机下导航菜单点击区域过小问题,且可以正常显示与隐藏了</li>
      
      <li>新增“赏赐”功能</li>
      
      <li>新增社交链接区域</li>
      
      <li>优化评论区域显示效果</li>
      
      <li>修复了裁剪图片文件太大的问题</li>
      
      <li>评论者链接已经过base64处理,外链跳转方式更安全</li>
      
      <li>优化了loading动画显示效果</li>
      
  • 2016年4月2日更新
    1. CSS细节优化
    2. <li>新增评论楼层显示</li>
      
      <li>新增代码高亮功能【已取消】</li>
      
  • 2016年4月15日更新
    1. 修复了文章列表时间显示问题[重要]
    2. <li>调整了wordpress更新后评论区域样式</li>
      
      <li>全新的邮件通知样式</li>
      
      <li>取消了上一个版本的代码高亮功能(BUG不好调。懒)</li>
      
      <li>新的文章结束样式,先这样,不喜欢的话下期再更新</li>
      
  • 2016年5月2日更新
    1. Css样式细节微调
    2. <li>其他几处bug修复</li>
      
  • 2016年7月3日更新
    1. 导航菜单手机端支持打开和关闭了【终于】
    2. <li>导航菜单支持耳机菜单了</li>
      
      <li>其他CSS微调</li>
      
      <li>···1.7.5版、1.8.1版、1.9.3版</li>
      
  • 2016年12月30日更新
    1. 更改主题设置方式【重要】
    2. <li>优化缩略图函数</li>
      
      <li>其他CSS微调</li>
      
  • 2017年1月4日更新
    1. 新增Pjax开关【重要】 --出现插件不兼容时可以关闭pjax
    2. <li>文章插入相册美化</li>
      
      <li>代码块CSS优化</li>
      
      <li>滚动条美化</li>
      

适配计划,非常抱歉,关于iDevise主题的Typecho的适配一直在跳票,之前是找的一个TP群里的热心网友帮忙适配,但是因为个人时间原因,适配没能完成,所以我这边会抽出时间适配一遍,但是可能会阉割一些功能,例如令我头痛不已的PJAX,但我会尽力而为,争取3月初放出,跳票吞翔,敬请期待 已吞到哭~。

欢呼吧,雀跃吧,主题已经完成Typecho版本和妹Blog版本的适配工作,在此感谢@Kven@Ace

同时欢迎Typecho界大牛献计献策,帮助完成适配工作。当然,如果你有适配能力,欢迎提交你的适配版本,我会将下载地址导向你的博客,帮你引流。

使用说明

鉴于主题设置面板基本用不上几次,所以我没有对主题添加设置面板功能,而是把相关设置放到了个人资料里面。 友情链接和统计代码添加,轻前往后台>用户>我的个人资料,最下方进行编辑,同时,文章和页面结束为止的介绍也是调用的个人资料,所以建议个人资料填写尽可能详细。

插件推荐

WP SMTP 这个发邮件就不提了。

WP-Markdown 我使用的是Markdown编辑器,建议大家也感受一下MD的魅力,富文本编辑器那狗屎般的冗余代码,强迫症忍不了。

附加功能

往functions.php添加代码即刻实现相应功能,不懂勿改。

// 静态资源使用七牛 CDN
function Qiniu_cdn(){ob_start( 'Qiniu_cdn_replace' );}
add_action( 'template_redirect', 'Qiniu_cdn' );
function Qiniu_cdn_replace( $code ){
    $cdn_exts = 'png|jpg|jpeg|gif|bmp';
    $cdn_dirs = str_replace( '-', '\-', 'wp-content|wp-includes' );
    $regex = '/' . str_replace( '/', '\/', site_url() ) . '\/((' . $cdn_dirs . ')\/[^\s\?\\\'\"\;\>\<]{1,}.(' . $cdn_exts . '))([\"\\\'\s\?]{1})/';
    return preg_replace( $regex, '//七牛的链接/$1$4', $code );
}

主题改动了下,原本的响应式差不多是废了,正好今天放假,呆在家里也无聊的紧,本来想给主题重新做一下响应的,但是弄起来真的是太麻烦了,也达不到我想要的效果,手机加载的东西还是那么多,于是萌生了单独做一个手机主题的想法。

既然想到了,那就实施把,单独做手机主题实现方法其实也蛮多的,但是主要的还是两种,一种是插件,忽略之,用插件不是我性格,于是用代码。

其实也不麻烦,主要就是在主页加个判断,PC和Mobile分开加载,wp_is_mobile()就可以做到,调试起来也很方便

<?php if( wp_is_mobile() ) :
include('m.index.php');
//手机主题文件
else:
//常规主题代码
endif; ?> 

用上面的范例修改一下你主题的index代码,然后新建一个m.index.php,这个就是手机版的首页了,用同样的方法,修改page和single,这样就能很快的兼容手机了,不用麻烦的做响应式 最后晒一下小成果吧,有点小简陋,没什么特别炫的功能,凑合着用把:

1 2 3 4