Quantcast
Channel: 三好公民 | WordPress大学

如何查看WordPress分类目录、标签和文章的ID

$
0
0

今天三好公民给新接触WordPress的朋友分享一个最最基础的入门教程,就是如何查看分类目录、标签和文章的ID。因为在WordPress的仪表盘(后台管理界面)中我们是找不到显示ID的选项的。不过我们可以这样来查看:

查看WordPress分类目录的ID

进入仪表盘,打开“分类目录”管理界面,然后把鼠标移动到某一个分类目录名称上,这时就会在网页左下角显示当前分类目录的编辑页面地址。如图:

category-id-wpdaxue_com

我们可以看到在显示的网址中有“ID=***”的字符,那么其中显示的数字即为该分类目录的ID。

查看WordPress标签的ID

按照同上的方法,进入标签管理界面,我们把鼠标移动到某个标签上面,即可在页面左下角看到该标签的管理页面网址(例如:http://www.3haow.com/wp-admin/edit-tags.php?action=edit&taxonomy=post_tag&tag_ID=429&post_type=post),这其中的“ID=”后所跟的数字即为该标签的ID。

查看WordPress文章的ID

同样的方法,在文章管理界面中,我们把鼠标移动到某篇文章的名称上,就会在页面左下角看到该篇文章的编辑页面网址(例如:http://www.3haow.com/wp-admin/post.php?post=3200&action=edit)。这其中的“ID=”后所跟的数字即为该文章的ID。

如果你想要批量查看多个项目的ID,那么这样一个一个地查看未免效率太低下,那么你可以参考一下倡萌的这两篇文章:《WordPress后台显示文章、分类、页面、标签、评论、用户等的 ID》、《WordPress代码 之 获取WordPress所有分类名字和ID》。


让WordPress文章的段落首行自动空两格

$
0
0

我们通常写文章时,段落首行都会空两格,可是WordPress自带的编辑器却没有考虑到这一点,导致发布的文章首行都是顶格的,看起来很不习惯。

我们通常的解决方法都是在发布文章时把编辑器切换到“文本”模式,然后再在首行手动键入两个全角的空格来实现的。但是这有两个弊端,一是麻烦,编辑不方便;再一个就是如果日后更换成了首行会自动空两格的主题,就会变成了首先空四个空格。

所以,最好的解决方法就是能实现发布文章时自动空两格,我们可以通过修改主题的style.css样式表文件来实现。方法如下:

以“三好网志”正在使用的经典的iNove主题为例。编辑style.css,找到:

.post .content p {
	margin-bottom:10px;
}

然后在其中加入:

text-indent:2em;

这样再发布文章时,段落首行就会自动缩进两个空格了。

如果你使用的是其他主题,可以在style.css中找到类似 .***** p { 这样的控制文章正文换行样式的代码,加入以上代码即可。

@斌果 补充:

如果一个新手想要添加首行缩进,而又不会 CSS 什么的,那么就无法实现,为此,我无聊的折腾了一个简单实现的方法,将下面的代码添加到主题目录 functions.php 的最后一个 ?> 前即可实现首行缩进,其它什么都不用调整。

//文章首行缩进
function Bing_text_indent($text){
	$return = str_replace('<p', '<p style="text-indent:2em;"',$text);
	return $return;
}
add_filter('the_content','Bing_text_indent');

巧用 Word 2013 发布文章到 WordPress 博客

$
0
0

我们都知道,WordPress 自带的编辑器功能比较弱,而使用 Word 编辑文档却功能强大。其实我们使用 Word 编辑好的文档也是可以直接发布到 WordPress 博客的,并且能够保留 Word 文档所编辑好的格式。下面三好公民就与大家分享一下 Word 2013 发布文章到 WordPress 博客的方法步骤:

1.在使用 Word 编辑好文档之后,点击左上角的“文件”菜单。如图:

2013-12-16_161740

2.在打开的“文件”菜单列表中选择“共享”下的“发布至博客”。如图:

2013-12-16_161544

3.然后点击右侧窗口中的“发布至博客”按钮,就会弹出“注册博客帐户”对话框。如图:

2013-12-16_161810

4.点击“立即注册”按钮,弹出“新建博客帐户”窗口。如图:

2013-12-16_161847

5.在博客下拉列表中选择“WordPress”,然后点击“下一步”,弹出“新建 WordPress 帐户”窗口。如图:

2013-12-16_165237

在“博客文章URL”中输入你的博客URL地址,在“输入帐户信息”中输入你的用户名和密码,勾选“记住密码”。如图文章中有图片的话,还可以点击“图片选项”按钮,设置一下图片的上传位置。

6.最后点击“确定”。然后就会回到你当前的文档编辑界面,并且 Word 菜单栏中多了一项“博客文章”菜单。如图:

2013-12-16_164859

你可以继续编辑文档,编辑完成之后点击左上角的“发布”按钮即可。

防止WP Keyword Link 自动使用关键词链接替换手动添加的链接

$
0
0

三好公民在自己的网站里安装了WP Keyword Link插件,可以自动为文章中的标签或关键词加上链接,该插件的详情参见倡萌的《WordPress SEO插件:WP Keyword Link 给标签/关键词加链接》一文,这里不再赘述。但是偶然三好公民发现了一个问题,就是在编辑文章时手动添加的链接,文章发布之后,就会发现手动添加的链接失效了,因为链接锚文字中的标签或关键词会被自动添加链接,从而替换了你手动添加的链接。不明白的话,下面举一个例子来帮助表达我的意思:

例如,三好公民为文章中的“Win8.1 Update(KB2919355) 离线更新包下载”这句话添加了一个指向另一篇文章的链接,想要实现的链接效果如图所示:

2014-04-09_172025

可是文章发布之后,链接却变成了如图所示的效果:

2014-04-09_171936

三好公民手动添加的指向另一篇文章的链接被替换成了关键词“Windows8”的链接。

那么如何解决这个问题呢?其实WP Keyword Link插件中已经给出了解决方法。如图:

2014-04-09_223836

使用自定义的标签 <wp_nokeywordlink></wp_nokeywordlink>, 该标签包含的内容不会有链接。

于是三好公民就按照这个方法重新编辑文章,将手动添加的“Win8.1 Update(KB2919355) 离线更新包下载”链接代码的两端添加了自定义标签 <wp_nokeywordlink></wp_nokeywordlink>。如图:

2014-04-09_223347

更新文章之后,问题成功解决,手动添加的链接再也不被关键词链接给替换了。

不好意思,三好公民一直没长进,多年了还是初级水平,所以一个简单的问题啰哩啰嗦了这么多,只是希望能够帮助到也像三好公民一样的WordPress初级用户。

禁止WordPress评论里的网址自动转换为可点击的链接

$
0
0

近来有人在评论中添加了一些网址,可恶的是,WordPress默认会为这些评论中的网址自动添加链接,那么如何防止WordPress评论里的网址自动转换为可点击的链接呢?

解决方案

编辑你的WordPress主题的functions.php文件,在其中添加如下代码:

remove_filter( 'comment_text', 'make_clickable',  9 );

添加以上代码后,不但可以防止新发表的评论中的网址自动添加链接,而且可以去除之前的已经发布的评论中的网址链接。

非常简单对吗?但只是知道这个似乎意义不大,学习讲究举一反三,知道这样做的理由似乎更重要。

为什么链接被自动转换

禁用的方法很简单,但我喜欢弄清来龙去脉。先说一下为什么链接会被自动转换。

WordPress加载过程中会include一个叫做default-filters.php的文件,位于wp-includes/目录下,该文件包含WordPress默认添加的actions和filters,看一下这个文件,满眼的add_action或者add_filter。

在评论表单中,用 comment_text() 函数输出用户的评论,comment_text()函数提供了一个filter叫做comment_text,在comment_text()函数返回评论结果前过滤结果。WordPress默认向这个filter添加了哪些函数?打开default-filters.php看一下,发现添加了如下功能:

//将Wordpress更正为WordPress
add_filter( 'comment_text', 'capital_P_dangit', 31 );
//格式化特殊符号
add_filter( 'comment_text', 'wptexturize' );
//转换符号,例如将<br>变成<br />
add_filter( 'comment_text', 'convert_chars' );
//将url自动变成可点击的链接,我们要找的东西
add_filter( 'comment_text', 'make_clickable',  9 );
//如其名字所说,将不完整的标签补全
add_filter( 'comment_text', 'force_balance_tags', 25 );
//将符号转换为表情
add_filter( 'comment_text', 'convert_smilies', 20 );
//自动添加<p>和<br />标签
add_filter( 'comment_text', 'wpautop',  30 );

WordPress将评论存入数据库时,是原封不动的存入的,例如用户输入

<blockquote>引用 <strong>小明的话

数据库存入的内容和上面相同,标签结构是不完整的,当程序调用comment_text()函数输出评论内容时,数据需要被上面提到的7个函数过滤一遍,当被force_balance_tags()处理时,就会将标签补全,于是输出的结果是

<blockquote>引用 <strong>小明的话</strong></blockquote>

既然WordPress用add_filter添加了make_clickable功能,我们只需要用于其相反的remove_filter移除这个功能就可以了,于是就有了开头的解决方案。

remove_filter中的9代表什么?

添加filter时,9代表优先级,规定了所有添加到某个hook的函数的执行顺序,移除的时候也一样。想象一下add_filter会让一个函数进入队列排队,数字越大的排的越靠后,即执行越晚。当我们需要移除某个函数时,必须保证移除功能在添加功能之后执行,在该函数还没有添加的时候移除它,没有任何意义。

make_clickable函数位于wp-includes/formatting.php中,不仅将链接变成可点击的,而且会自动添加rel=”nofollow”属性,如果你希望跟随某些链接,可以先移除默认的功能,然后写一个自己的功能加进去。

举一反三

这种remove_filter和add_filter的把戏可以用到很多地方,比如很多插件会用wp_enqueue_script和wp_enqueue_style添加自己的脚本和样式表,如果插件把脚本放到head中,可能会拖慢网页加载速度;有的插件自带的样式表只有几句话,单独存放成一个文件完全没必要,这些行为都会让你的head标签内容变长,对SEO也是有害的。你想制止这种行为,怎么办?

用上面提到的先remove再add的思想,只不过这次我们调用的是另外两对函数:

  • wp_dequeue_style
  • wp_enqueue_style
  • wp_dequeue_script
  • wp_enqueue_script

例如,想将WP-PageNavi插件的样式表移除,将样式合并到主题的style.css中,可以在functions.php中如是说

add_action('wp_print_styles', 'dequeue_stylesheets');
function dequeue_stylesheets() {
   wp_dequeue_style('wp-pagenavi');
}

这样WP-PageNavi的样式表link就从head中消失了。

再举个移动脚本的例子,wp-codebox插件默认将脚本codebox.js放在head中,我希望将其挪到</body>标签之前,在主题的functions.php中写如下代码

add_action('wp_print_scripts', 'move_codebox_script');
function move_codebox_script() {
    wp_dequeue_script('codebox');
    wp_enqueue_script('codebox', get_bloginfo ( 'wpurl' )
 . '/wp-content/plugins/wp-codebox/js/codebox.js',
 array('jquery'), '0.1',1,true);
}

同样,先注销这个脚本, 再引入。注意wp_enqueue_scriopt函数最后一个参数设置为true,即表示在footer引入脚本。

通过这种方法,可以达到优化网站结构的目的,最佳模式是:

  • 样式表在head中引入
  • 脚本在</body>标签前引入
  • 引入的样式表和脚本越少越好,这样可以减少http请求次数,方法是将所有脚本合并,所有样式表合并,当然这样会令使用便利性打折扣,平衡在哪里要根据自己的具体情况来。
  • 异步请求的追踪脚本,例如google分析脚本,推荐加载head中。

结语

从禁止评论自动转换URL为可点击的链接找到了根源,了解了如何知晓WordPress默认添加了哪些filter函数(翻阅default-filters.php),知道WordPress有哪些格式化函数(查看formatting.php)。

通过举一反三,联想到一种WordPress中优化网站HTML结构、提升网页加载速度的方法,这就是了解来龙去脉的好处。

参考自:http://www.solagirl.net/how-to-disable-comment-make-clickable-function.html

让移动主题显示切换到“桌面版(电脑版)”链接(Any Mobile Theme Switcher)

$
0
0

三好公民使用的WordPress手机主题调度插件是Any Mobile Theme Switcher,倡萌的《6 个 WordPress 手机主题调度插件》一文中做过推荐。Any Mobile Theme Switcher的基本设置很简单,倡萌的那篇文章里已经做了简要介绍,三好公民这里不再赘述。单说一下Any Mobile Theme Switcher设置界面底部的其他设置部分。如图:

2014-04-20_232149

这里是让你设置切换手机版和桌面版的显示文本,三好公民分别设置的是“手机版”和“电脑版”,本来科学地说应该是“桌面版”,但考虑到一般网友的习惯,还命名为“电脑版”。另外,还有一个选项,是问你访客访问桌面版时是否显示切换到手机版的链接,这个没有必要,默认为否即可。

保存设置之后,本想着在移动主题界面应该显示“电脑版”链接了,但是手机访问后发现并没有显示。

原来,想要显示切换链接的话,还需要在移动主题中添加一行代码,Any Mobile Theme Switcher设置界面底部的“Read Me Please”部分做了介绍。如图:

2014-04-20_232216

需要在移动主题中添加的代码为:

<?php echo do_shortcode('[show_theme_switch_link]'); ?>

三好公民在自己所用的Mobile pack主题的页脚部分添加了以上代码后,就显示了“电脑版”切换链接。如图:

2014-04-20_232116

另外,如果你想在网站的导航菜单中添加手机版或电脑版切换链接,可以分别添加链接:

http://www.3haow.com/?am_force_theme_layout=desktop(电脑版)

http://www.3haow.com/?am_force_theme_layout=mobile(手机版)

巧用 Pretty Link 插件把淘宝客链接等站外链接转换为站内链接

$
0
0

三好公民从来没想过做专职淘宝客,但是在博客上写文章时,如果文章内容碰到了三好公民买过的某款商品,并且使用体验不错,就想着顺便添加一个该商品的淘宝推广链接。但是令人郁闷不解的是,三好公民直接在文章内添加了淘宝商品推广原始链接,就会导致文章无法发表成功,点击发布按钮后,页面跳转到/wp-admin/post.php,但是竟然提示页面无法显示,显示404页面。只有去掉了淘宝客链接才能成功发布文章。

对于这种现象,三好公民始终没弄明白是怎么回事,于是就寻找变通的方法。看到有人推荐用转换链接的方法,应该也是一个解决途径,这就涉及到用什么插件一实现站外链接转换为站内链接了。倡萌曾经推荐过Simple URLs插件(详见《WordPress外链转内链插件:Simple URLs》),但是该插件已经两年没更新了,所以三好公民选择了该篇文章推荐的另外一款插件Pretty Link。Pretty Link的最后更新是 9 个月前,并且下载量高达 86 万多次,比Simple URLs整整高一个数量级。不过正像倡萌在文章中所说,“Pretty Link功能更强大,设置稍复杂”。但对于我们普通用户来说,其实只用它的最基本的外链转内链功能,其实需要设置的地方不多,还是很好操作的。下面三好公民就介绍一下Pretty Link的使用方法:

我们可以在WordPress后台“安装插件”中直接搜索Pretty Link,搜索结果中是Pretty Link Lite,也就是Pretty Link的简易免费版本,但功能对普通用户来说足矣。然后安装启用Pretty Link插件,进入插件设置页面,点击左上角的Add a Pretty Link打开添加链接页面。如图:

2014-08-26_165447

下面说一下需要设置的地方:

  • Redirection Type – 设置为301;
  • Target URL – 这里粘贴淘宝推广链接;
  • Pretty Link – 这里自定义站内链接,建议把链接集中到一个目录下,以方便在robots.txt中屏蔽搜索引擎蜘蛛抓取。例如三好公民设置的为http://www.3haow.com/tb/xiaoxiongjiashiqi,其中的tb目录,之后就可以在robots.txt中屏蔽掉。屏蔽方法为,在robots.txt中添加如下代码:

User-agent: *

Disallow: /tb/

然后是下面的Options选项卡:

  • Group – 是为链接设立一个分组,三好公民准备把所有淘宝客链接都归类到一组中,所以点击Add a New Group添加了一个名为taobao的分组。
  • SEO Options下的’Nofollow’ this Link – 建议勾选该项,可以为链接添加Nofollow属性,拒绝搜索引擎蜘蛛爬取该链接。其实这个前面添加robots.txt协议的效果应该是相似的吧?为了保险,两个都做吧。
  • Tracking Options下的Track Hits on this Link – 默认该选项是勾选的,可以跟踪链接的点击情况,显示给你一个直观的查看数据。

好了,一般对于普通用户来说,以上的设置就足够了。最后点击Create按钮,即可创建链接。然后你就可以看到你刚刚创建的链接了。如图:

2014-08-26_165710

以后你就可以在 Hits / Uniq 项目下看到该链接的点击情况了。

然后你就可以在文章中添加转换后的站内链接,成功发布文章后,点击该站内链接就会重定向到淘宝商品推广链接了。

注:Pretty Link插件同样需要固定链接伪静态的支持,所以请确保你的主机启用了伪静态支持,或者重新保存一下固定链接设置。

巧用“微信机器人”实现在微信搜索 WordPress 博客的文章

$
0
0

倡萌之前已经介绍过这款由 @我爱水煮鱼 开发的 WordPress 插件“微信机器人”(详见文章《WordPress插件:微信机器人》),只不过正像倡萌在文章中所言,“没有进行验证,不做演示”,所以对新手来说,在微信公众平台应该如何设置可能会一时找不到地方,那么今天三好公民就通过自己的实际操作来演示一下如何在微信公众平台进行设置,并提供最新版本的“微信机器人”下载链接。

首先,你需要在 WordPress 中安装“微信机器人”插件,三好公民试着直接在 WordPress 后台搜索插件,但是却搜不到,所以现在给大家分享一下最新版本的“微信机器人”下载链接(https://downloads.wordpress.org/plugin/weixin-robot.zip)。下载之后,通过上传的方式来安装即可。安装之后,启用插件。插件基本设置界面如图:

2014-09-14_080551

一般用户按默认设置即可,无需修改。

PS:三好公民在这里遇到了一个不知是不是Bug,就是一时手贱勾选了“”和“”选项,保存之后,再取消勾选,再保存,竟然发现取消不掉了。重装插件也没能解决,不知何故,希望有知道的朋友告知一下,谢谢!

好,下面重点介绍一下在微信公众平台的设置:

在PC上登录你的微信公众平台,在左侧导航列表中点击最底部的“开发者中心”,右侧窗口会显示一个“成为开发者”按钮,勾选同意开发者协议,然后点击“成为开发者”按钮,你就算是成为一名普通的微信开发者了。这时“开发者中心”页面就会显示具体的配置项了。如图:

2014-09-13_224556

在“服务器配置”区域点击右侧的“修改配置”按钮,就会显示你在《WordPress插件:微信机器人》一文中所看到的 URL 和 配置界面了。如图:

2014-09-13_224757

URL 填写 http://你的博客地址/?weixin

填写 weixin

点击“提交”按钮,显示提交成功,则说明已经成功地连接到了你的 WordPress 博客的微信机器人。然后返回配置项页面,点击“启用”按钮。如图:

2014-09-13_230342

这时会弹出提示,说启用服务器配置后,你在微信公众平台的自动回复设置会失效,这个没有办法,因为微信机器人实际上是接管了微信公众平台的自动回复服务,如果你还想用微信机器人,选“是”即可。

这样在微信公众平台的设置即已完成。

然后在手机上打开你的微信公众平台,回复某个关键字试验一下,例如三好公民在自己的微信公众平台“三好在线(微信号:www-3haow-com)”上回复“微信”一词,就会返回在“三好网志”上搜索到的相关文章。如图:

20140914084019

只不过点击文章之后,实际上是在微信中打开了博客文章的页面,所以建议你为 WordPress 博客安装手机主题调度插件(例如三好公民使用的 Any Mobile Theme Switcher),并启用移动主题,以在微信中显示更适合手机阅读的页面。


巧用 WP-Optimize 自动清理优化数据库

$
0
0

因为 WordPress 网站的页面都是动态网页,所以对数据库的读取很频繁,数据库优化与否对于网站的访问速度影响很大,因此对 WordPress 数据库的清理和优化是经常要做的一项功课。如果能够实现自动清理和优化数据库,岂不美哉?这里三好公民推荐 WP-Optimize 这款 WordPress 数据库优化插件,因为从最新的1.8.9.7版本开始, WP-Optimize 增加了自动清理和优化功能,能让我们省不少心。

WP-Optimize 下载地址:https://wordpress.org/plugins/wp-optimize/

安装最新版本的 WP-Optimize 插件后,进入后台管理界面,点击顶部的“设置”标签打开设置界面。如图:

2014-09-30_133137

在右侧的“自动清理设置”区域勾选“启用预设自动清理和优化”选项,因为是 WP-Optimize 新增加的功能,所以这里还标记着“测试功能”。

然后设置计划方案,每隔多长时间自动清理一次,默认是每周,三好公民怕清理得过于频繁,导致有些自动草稿、修订记录或评论还没有来得及审核就被清理掉,所以设置为了每两周自动清理一次。

然后在下面勾选需要清除的内容,默认已经勾选了删除修订记录、自动草稿和垃圾评论。相信大家都在使用反垃圾评论插件 Akismet ,被 Akismet 归类到垃圾评论文件夹中的垃圾评论会于 15 天后自动删除,所以这里的“删除垃圾评论”选项勾选不勾选均可。同样是怕有些评论没来得及审核就被清理掉,所以三好公民没有勾选“删除未清除未审核的评论”。当然最后的“优化数据库”选项是必勾选无疑。至于红色字体的选项, WP-Optimize 主界面已经有提示“除非你真的需要,不要选择红色标记的选项”。

最后点击“保存自动清理设置”按钮。

回到 WP-Optimize 主界面,你会看到在状态区域显示“清理计划已启用 ”,并且根据你设置的自动清理时间间隔显示下次自动优化的时间。如图:

2014-09-30_135343

此后,你就不用再费心 WordPress 数据库清理和优化的工作了, 一切交给 WP-Optimize 去自动打理吧!

WordPress SEO优化:去除作者存档链接和日期链接(Twenty Ten主题为例)

$
0
0

三好公民为新建的Windows 10 Pro(Win10专业网)依然启用了简洁明快的WordPress自带主题Twenty Ten,但是该主题在SEO方面没有进行优化,就说最简单的文章标题下面的“作者”和“发布日期”吧,作者都有一个指向作者存档的链接,发布日期则有一个指向文章地址的链接。

如图1:

2014-10-12_112818

而网站只有三好公民一个作者,所以作者存档页面的内容与主页的完全一样,这对于SEO来说就是一种不利的重复信息。而发布日期带有文章地址的链接,也纯粹是多此一举,除了增加搜索引擎蜘蛛的负担,并无任何作用。所以我们最好去掉作者存档的链接和发布日期的链接。

三好公民先在网上搜索,但是只有为作者存档链接添加nofollow的例子,需要编辑\wp-includes\author-template.php其中的代码:

 <a href="%1$s" title="%2$s" rel="author">%3$s</a>

三好公民想那现在要删除链接,直接去掉链接代码不就行了吗?可是删除了author-template.php中所有的链接代码都没有作用。 于是三好公民觉得Twenty Ten主题控制作者存档链接和日期链接的代码应该不是在author-template.php,而是在主题文件夹里,经过一番查找终于在主题的functions.php里找到了相关代码如下:

function twentyten_posted_on() {
   printf( __( '<span class="%1$s">Posted on</span> %2$s <span class="meta-sep">by</span> %3$s', 'twentyten' ),
       'meta-prep meta-prep-author',
       sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a>',
           get_permalink(),
           esc_attr( get_the_time() ),
           get_the_date()
           ),
       sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',
           get_author_posts_url( get_the_author_meta( 'ID' ) ),
           esc_attr( sprintf( __( 'View all posts by %s', 'twentyten' ), get_the_author() ) ),
           get_the_author()
           )
       );
}

里面有两个链接代码,第一个是日期指向文章地址的链接,第二个是作者指向作者存档的链接。把这两个链接代码去除之后,以上代码变成:

function twentyten_posted_on() {
    printf( __( 'Posted on %2$s by %3$s', 'twentyten' ),
        'meta-prep meta-prep-author',
        sprintf( '%3$s',
            get_permalink(),
            esc_attr( get_the_time() ),
            get_the_date()
            ),
        sprintf( '%3$s',
            get_author_posts_url( get_the_author_meta( 'ID' ) ),
            esc_attr( sprintf( __( 'View all posts by %s', 'twentyten' ), get_the_author() ) ),
            get_the_author()
            )
        );
}

这样就可以去除作者存档和日期的链接了。效果如图2:

2014-10-12_113355

PS:另外,你还可以选择不去除链接,而是在参照倡萌分享的《将WordPress的作者存档链接重定向到about页面》修改一下指向链接;或者是为链接添加nofollow属性也可以,添加方法是在上面的代码中添加rel=”nofollow”即可。

让主题显示 WordPress 后台添加的ICP备案号

$
0
0

三好公民下载安装了最新的WordPress 4.0后,欣喜地发现在WordPress后台的“常规”选项卡中增加了一个填写“ICP备案号”的设置。如图:

倡萌注:后台备案号的设置是从 WP 3.7 开始的,查看网站根目录的 wp-config.php 文件,一般会看到 define(‘WP_ZH_CN_ICP_NUM’, true); 这个定义,这个就是用来添加后台备案号设置的。如果你的 WP 版本在 3.7 以上,而且 wp-config.php 含有 define(‘WP_ZH_CN_ICP_NUM’, true);  就可以在后台 设置 – 常规 中看到配置选项。

2014-10-12_150316

遗憾的是这个“ICP备案号”仅对WordPress自带主题有效,那么大家使用第三方WordPress主题的实在是太多了,因此不能享受到 WordPress 这个新添加的小功能实在是让人窝火。不过好在你只需要在自己所用的主题的footer.php中添加一行代码,即可让在WordPress 后台添加的ICP备案号显示出来了。

<a href="http://www.miitbeian.gov.cn/" rel="external nofollow" target="_blank">
<?php echo get_option( 'zh_cn_l10n_icp_num' );?>
</a>

如果你不希望链接到工信部网站,只添加下面的代码即可

<?php echo get_option( 'zh_cn_l10n_icp_num' );?>

默认效果如图:

2014-10-12_150414

为WordPress添加侧边跟随百度分享按钮(含划词分享、图片分享效果)

$
0
0

什么是侧边跟随百度分享按钮?三好公民先用一个预览图表达一下想要实现的效果:

2014-10-21_223758

正如你所看到的,侧边跟随百度分享按钮指的就是上图中的 ①,这个百度分享按钮能够固定悬浮在页面左侧,跟随页面滚动一直显示;② 就是划词分享效果;③ 就是图片分享效果。

下面三好公民详解一下实现方法,参考了鸟哥在HotNews Pro Plus主题中的代码,原代码没有划词分享和图片分享效果,三好公民做了一点修改,能够实现划词分享和图片分享效果,并且能够在任何WordPress主题上添加侧边跟随百度分享按钮。

1.新建一个文件 share.php,然后把如下代码粘贴到其中:

<div id="share">
    <div class="share_top">
        <i class="lt"></i>
    </div>
    <div class="share">
        <div class="bdsharebuttonbox">
            <a href="#" class="bds_more" data-cmd="more"></a>
            <a title="分享到QQ空间" href="#" class="bds_qzone" data-cmd="qzone"></a>
            <a title="分享到新浪微博" href="#" class="bds_tsina" data-cmd="tsina"></a>
            <a title="分享到腾讯微博" href="#" class="bds_tqq" data-cmd="tqq"></a>
            <a title="分享到人人网" href="#" class="bds_renren" data-cmd="renren"></a>
            <a title="分享到微信" href="#" class="bds_weixin" data-cmd="weixin"></a>
        </div>
        <div class="clear"></div>
    </div>
    <div class="share_bottom">
        <i class="lb"></i>
    </div>
</div>
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

将这个 share.php 文件上传到当前主题的根目录。

2.在主题的style.css中添加如下样式代码:

#share {
	display:block;
	width:35px;
	margin-left:-517px;
	position:fixed;
	left:50%;
	top:420px;
	_margin-left:-515px;
	_position:absolute;
	_margin-top:420px;
	_top:expression(eval(document.documentElement.scrollTop));
	}
.share {
	background:#fff;
	width:24px;
	border-left: 1px solid #ccc;
	border-right: 1px solid #ccc;
	}
.share_top {
    position:relative;
    background:#fff;
    width:24px;
    height:8px;
    border-top:1px solid #ccc;
    border-left: 1px solid #ccc;
    border-right: 1px solid #ccc;
    }
.share_bottom {
    position:relative;
    background:#fff;
    width:24px;
    height:8px;
    margin:0 0 10px 0;
    border-left: 1px solid #ccc;
    border-right: 1px solid #ccc;
    border-bottom:1px solid #ccc;
    }
.bdsharebuttonbox {
    padding:0 0 0 4px !important;
    }
.bdsharebuttonbox a {
    width:16px !important;
    padding:0 !important;
    margin:3px 0 !important;
    }

3.在主题的 footer.php 中 </body> 的前面添加调用 share.php 文件的代码即可:

<?php get_template_part( 'share' ) ?>

禁止WordPress向站内链接发送PingBack引用通告

$
0
0

使用WordPress建站的朋友都知道,如果你在撰写文章时添加了另一篇WordPress文章的链接,那么发布文章后就会向那篇被链接的文章发送一条Pingback引用通告,这对于两个WordPress站点的互动和交流还是很有好处的。但是WordPress默认也会向站内链接发送Pingback引用通告,如果自己站内的某篇文章被多次链接,那么那篇文章收到的Pingback引用通告就会很多。

有图有真相,下面你可以看一下三好公民自己站内的某篇文章收到的Pingback引用通告数量,很恐怖哦!如图:

2014-11-02_194835

而对于站内文章来说,获得这么多的Pingback引用通告不但无益,还有一定的害处,例如导致数据库庞大、不利于SEO等。所以,我们最好是禁止WordPress向站内链接发送PingBack引用通告,而对于站外链接则照发不误。实现方法如下:

在当前WordPress主题的functions.php中添加如下代码:

function no_self_ping( &$links ) {
    $home = get_option( 'home' );
    foreach ( $links as $l => $link )
        if ( 0 === strpos( $link, $home ) ) unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );

其实以上代码就是提取自 No Self Pings 插件,没必要因为这个需求再专门安装个插件。

另外,如果你要删除之前已经产生的Pingback,则可以在数据库中运行如下命令:

UPDATE wp_posts SET ping_status='closed';

注意修改上面的 wp_posts 的前缀 wp_ 为你的数据库表前缀哦!

但是这个命令也会把所有的来自站外的Pingback引用通告也删除掉,所以也在这里求一条能够只删除来自站内的Pingback引用通告的命令,希望知道的朋友能够在评论中分享一下,非常感谢!

WordPress为非友情链接添加nofollow属性的方法

$
0
0

《三好网志》近日被某主机商联系广告业务,附带让在友情链接处添加个链接,怕三好公民不乐意,所以特意说明可以为该链接添加nofollow属性的。但是三好公民在添加链接时,发现“链接关系(XFN)”列表中并无 nofollow 选项。如图:

WordPress为非友情链接添加nofollow属性的方法

那么如何添加 nofollow 选项呢?

方法1:直接修改源代码

WordPress 4.5.3为例,编辑/wp-admin/includes/meta-boxes.php,在1145行添加如下代码:

<tr>
  <th scope="row">nofollow</th>   
  <td>
    <fieldset>
      <legend class="screen-reader-text"><span> nofollow </span></legend> 
      <label for="nofollow"><input class="valinp" type="checkbox" name="nofollow" value="nofollow" id="nofollow" <?php xfn_check('nofollow'); ?> />nofollow</label>
    </fieldset>
  </td>
</tr>

然后你再添加链接时,就会在“链接关系(XFN)”列表中看到 nofollow 选项了。如图:

WordPress为非友情链接添加nofollow属性的方法

不太推荐修改WP源代码,因为每次更新你都要修改一遍。

方法2:使用Add-nofollow-to-XFN插件

如果你不想折腾代码,可以使用插件Add-nofollow-to-XFN实现同样效果。当然,你也可以在主题的 functions.php 添加下面的代码(来自于插件):

/*
Plugin Name: Add-nofollow-to-XFN
Plugin URI: http://www.slyar.com/blog/Add-nofollow-to-XFN
Description: 在后台链接管理的XFN关系中添加一个 nofollow 标签
Author: Slyar
Version: 1.2
Author URI: http://www.slyar.com/
*/
function admin_xfn() {?>
<script type="text/javascript">
addLoadEvent(addNofollowTag);
function addNofollowTag() {
  tables = document.getElementsByTagName('table');
  for(i=0;i<tables.length;i++) {
    if(tables[i].getAttribute("class") == "links-table") {
      tr = tables[i].insertRow(1);
      th = document.createElement('th');
      th.setAttribute('scope','row');
      th.appendChild(document.createTextNode('Follow'));
      td = document.createElement('td');
      tr.appendChild(th);
      label = document.createElement('label');
      input = document.createElement('input');
      input.setAttribute('type','checkbox');
      input.setAttribute('id','nofollow');
      input.setAttribute('value','nofollow');
      label.appendChild(input);
      label.appendChild(document.createTextNode(' nofollow'));
      td.appendChild(label);
      tr.appendChild(td);
      input.name = 'nofollow';
      input.className = 'valinp';
      if (document.getElementById('link_rel').value.indexOf('nofollow') != -1) {
        input.setAttribute('checked','checked');
      }
      return;
    }
  }
}
</script>
<?php
}
add_action('admin_head','admin_xfn');

方法3:创建一个独立的Meta选项

仍旧可以添加到主题的 functions.php :

/**
 * 一下两个钩子是为了保证代码只在links页面显示
 * 如果你想了解更多load-$page action的信息,访问http://codex.wordpress.org/Adding_Administration_Menus#Page_Hook_Suffix
 */
add_action('load-link.php', 'sola_blogroll_nofollow');
add_action('load-link-add.php', 'sola_blogroll_nofollow');
 
function sola_blogroll_nofollow() {
    //通过action add_meta_boxes创建我们需要的Meta Box
    add_action('add_meta_boxes', 'sola_blogroll_add_meta_box', 1, 1);
    //通过filter pre_link_rel将数据保存
    add_filter('pre_link_rel', 'sola_blogroll_save_meta_box', 10, 1);
}
 
//创建Nofollow Meta Box
function sola_blogroll_add_meta_box() {
    //翻译成中文就是,创建一个名叫Blogroll Nofollow的Meta Box,放在link页面的右侧边栏,Meta Box的结构
    //由函数sola_blogroll_inner_meta_box产生
    add_meta_box('sola_blogroll_nofollow_div', __('Blogroll Nofollow'), 'sola_blogroll_inner_meta_box', 'link', 'side');
}
 
//输出Meta Box的HTML结构
function sola_blogroll_inner_meta_box($post) {
    $bookmark = get_bookmark($post->ID, 'ARRAY_A');
    if (strpos($bookmark['link_rel'], 'nofollow') !== FALSE)
        $checked = ' checked="checked"';
    else
        $checked = '';
    ?>
    <label for="sola_blogroll_nofollow_checkbox"><?php echo __('Nofollow this link?'); ?></label>
    <input value="1" id="sola_blogroll_nofollow_checkbox" name="sola_blogroll_nofollow_checkbox"<?php echo $disabled; ?> type="checkbox"<?php echo $checked; ?> /> <?php echo $message; ?>
    <?php
}
 
//保存用户的选择
function sola_blogroll_save_meta_box($link_rel) {
    $rel = trim(str_replace('nofollow', '', $link_rel));
    if ($_POST['sola_blogroll_nofollow_checkbox'])
        $rel .= ' nofollow';
    return trim($rel);
}

效果:

nofollow-box

该方法来自:http://www.solagirl.net/nofollow-wordpress-blogroll.html

倡萌注:其实很早的版本开始,WordPress 就默认隐藏了这个单独的链接管理功能(新安装WP的朋友估计是看不到了),推荐大家使用自定义菜单来实现,不过很多主题作者仍旧使用链接管理功能,所以一般的用户也只能跟着用。还是推荐主题作者可以更换为自定义菜单功能哦。

把一个WordPress站点的文章导入另一个WordPress站点的方法

$
0
0

光看标题你可能不是太清楚具体的情况,所以三好菌就先把自己的需求详细描述一下:

三好菌想要放弃之前的“我爱Windows8”网站,但是其中的某些资源(例如“Windows8主题”)在Windows10中依然有效,并且这些文章都是三好菌一个字一个字码出来的,所以全部丢弃着实可惜。于是,三好菌就想把其中的部分文章导入到“Win10专业网”中。但是文章的分类目录、标签、标题、正文部分内容,甚至固定链接都需要做修改才行。

还是以把“我爱Windows8”网站的“Win8主题”分类目录的文章导入“Win10专业网”的“Win10主题”分类目录为例,需要修改的地方有:

  • 分类目录:“Win8主题”改成“Win10主题”
  • 标签:“Win8.1主题下载、Windows8主题”改成“Win10主题下载、Windows10主题”
  • 文章标题:“Win8.1”修改成“Win10”
  • 文章作者:“Microsoft酋长”改成“MS酋长”
  • 文章发布日期:改成“Win10专业网”建站之后的日期才合理
  • 文章内容:“Win8.1”修改成“Win10”
  • 固定链接:http://www.52windows8.com/%category%/%post_id%.html格式修改成http://www.windows10.pro/sample-post/格式
 

面对这几百篇文章,如何才能效率既高,又不易出错呢?可能对于数据库高手来讲不在话下,可是对于三好菌来说,纯粹操作数据库还真怕玩不转,尤其是风险太高。

想必有这个需求的不是太多,所以三好公民没有找到现成的教程,只好自己琢磨。本来想尝试采集软件,但是觉得可控性不好。于是,就决定还是用WordPress自带的“导入/导出”工具靠谱。倡萌已经分享过《WordPress自带的导出导入功能使用教程》,所以三好菌不再赘述导出导入的方法,下面只详细分享一下如何借助它实现在两个不同WordPress网站间转移文章的目的。

这就需在转移的过程中来做手脚,也就是把导出的数据先修改成符合我们需要之后再导入新站点。WordPress导出的是xml格式的文件,三好菌用Notepad++打开它,下面展示一下一篇文章的标题和正文内容部分。如图:

2016-11-16_205307

你可以很轻松地用批量替换的方法把标题和正文内容中的“win8.1”替换成“Win10”。但是文章链接和发布日期、分类目录、标签等却需要修改正文后面的元数据部分。如图:

2016-11-16_205853

<wp:post_id>

文章ID,为了避免ID重复,建议修改成比新网站最新的文章ID还大的数字,否则有冲突的风险。

<wp:post_date>

文章发布日期

<wp:post_name>

固定链接中显示的文章标题。建议把这里修改成简短一些的英文,否则导入之后文章的链接就变成了“http://www.windows10.pro/汉字文章标题的编码/”,很长;

<category domain=”category” nicename=”themes”><![CDATA[Win8主题]]></category>

分类目录,除了要修改汉字的分类目录名称,还要修改nicename,也就是分类目录的别名,修改成新网站里分类目录的别名,否则即使汉字名称相同,导入之后文章也会另起炉灶,在另一个同名的目录里。

<category domain=”post_tag” nicename=”windows8-1%e4%b8%bb%e9%a2%98″><![CDATA[Windows8.1主题]]></category>

文章标签。同样要修改标签名称和别名。

这其中能够批量修改的有“文章标题、发布日期(年份)、分类目录、标签、正文中的字词”,需要逐一修改有“文章ID、固定链接里的文章标题”,所以总体上修改效率还是比较高的。

细心的读者可能会说,怎么没见修改文章作者啊?其实不用这里改,导入的时候指定新作者就可以了,后面会讲到。不过文章正文中的作者名称还是要在这里批量修改好的。

修改完成之后保存,然后就可以在新网站中导入了。

2016-11-16_212813

看到了吧,只需“将日志分配给现有用户”就可以实现改作者了。

不过这里有一点比较遗憾,就是“

PS:关于转移图片,三好菌想到一个方法。就是先把所有的图片全部拷贝过来,然后使用Add From Server插件把这些图片信息添加进入媒体库,然后使用媒体库里的“尚未附加”进行筛选,或者使用 DNUI 插件扫描未使用的图片,再批量删除即可。

OK,一番忙碌之后,旧网站的文章已经与新网站的文章浑然一体了。


WordPress插件推荐:XML 站点地图 &谷歌新闻订阅源

$
0
0

XML格式的网站地图是一个网站SEO最基础的东西,有了sitemap.xml确实对于网站的收录有帮助。三好菌之前一直用的柳城的Baidu Sitemap Generator插件,但是在更换主机环境以后,发现无法生成sitemap.xml了,点击“Update XML file”按钮后一片空白。原因应该是Baidu Sitemap Generator插件与PHP7不兼容导致的。

而柳城看来也没有更新该插件的打算了,因为插件官方页面的评论已经关闭了。于是三好菌只好再找其他的XML网站地图插件,在WordPress后台搜索发现“XML 站点地图 & 谷歌新闻订阅源(XML Sitemap & Google News Feeds)”的安装数量和好评率都还不错,于是就安装了它。结果发现还真不错。

你可以先预览一下 http://www.windows10.pro/sitemap.xml ,看看效果如何。

首先,“XML 站点地图 & 谷歌新闻订阅源”插件的设置界面是集成在WordPress的“阅读”设置界面中的。如图:

WordPress插件推荐:XML 站点地图 & 谷歌新闻订阅源

“XML 站点地图 & 谷歌新闻订阅源”插件一个很显而易见的优点就是插件的设置很傻瓜化,普通用户根本不需要任何设置,安装该插件之后就可以当甩手掌柜了。正像作者介绍中说的那样:

本插件相比起其他 XML 站点地图插件的优点便在于其简易性。它不需要你修改文件或文件夹权限,不需要移动文件或在那些困难复杂的插件选项上耗费时间。

你,或是你的多站点网络的管理者,完全不需为在其他 XML 站点地图插件上才会出现的过于复杂的设置所困扰。本插件的默认设置已足以应对大多数情况,XML 站点地图中诸如 ChangeFreq 或链接优先级等指数将会根据文章发表时长与评论活动情况自动运算。

如果你进行稍复杂些的自定义,“XML 站点地图 & 谷歌新闻订阅源”插件也提供了一些很实用的设置项:

  • 额外 robots.txt 规则

方便你在WordPress默认的robots规则后追加自定义规则(规则的写法,参见《为你的 WordPress 站点添加 robots.txt》相关内容)。

  • 谷歌新闻站点地图

除了生成 XML 站点地图,另外还可以选择生成谷歌新闻站点地图,这对一些新闻站点还是很用的。

更多的设置看下图:

WordPress插件推荐:XML 站点地图 & 谷歌新闻订阅源

  • 包含的文章类型、分类

你可以选择sitemap.xml文件中包含的文章类型,以及是否包含分类目录和标签。

  • 允许的域名

你的网站中会有其他域名的链接,例如 Page Links To 插件的自定义链接,如果想被包含在站点地图中,可以添加到文本框中。

  • 包含自定义链接

可以把自定义链接添加进站点地图并设置优先级。

  • 包含自定义的 XML 站点地图

你如果手工制作的还有其它XML地图,那么可以添加到这里,它会被追加到主XML站点地图中。

你可以在WordPress后台“安装插件”页面搜索“XML Sitemap & Google News feeds”,或者到 WordPress.org插件页面 查看详情和手动下载。



Latest Images