第一次登场,先跟大家自我介绍下。本人昵称 Packy,是一名小小站长,响应 Denis 兄的号召来与大家分享WordPress的技巧。要说WordPress的基础肯定是比不过 Denis 兄的,但是我滴折腾欲望非常强,擅长在 Google 翻箱倒柜后整合各家所长,本地测试有效果后才会来郑重的发布文章哟。 言归正传,今天我给大家分享的是无缝整合 Google 自定义搜索框的技巧。早在08年 Denis 就写过一篇整合Google自定义搜索到WordPress中的教程,可以达到强化搜索、减轻数据库读取和赚取利润的各种好处。其中的第6步是用 Google 的搜索框代替主题本身的搜索框,但是现在使用国外主题和付费主题的朋友越来越多了,这类主题都有一共同效果——界面UI棒!拥有精美搜索框的主题也不在少数,如果让你放弃原先精美的搜索框,而用 Google 那简单单一的搜索框是不是会有点不舍呢? 不用担心,接下来 Packy 教你一步步无缝整合 Google 自定义搜索框,可以在不修改原搜索框的前提下使用 Google 强大的自定义搜索功能。 如果你是第一次整合Google自定义搜索,可以按照我的步骤来;如果你对代码较了解,可以根据你的需要选择性的看。 第一步:注册并获取 Google 自定义搜索代码 整合 Google 自定义搜索之前肯定必须要先让 Google 为你服务,通过访问 http://www.google.com/cse/ 创建你的搜索引擎。创建完毕后进入“外观”面板,选择“全宽”的布局模式。保存后进入“获取代码”,获得你的 Google 自定义搜索代码: <!– Put the following javascript before the closing </head> tag. –> <script> (function() { var cx = ‘015818537936328944739:nkbsvpppu5k’; […]
December 2013
WordPress 教程:创建多人博客作者页面
根据前面的 WordPress 技巧:创建博客作者页面 的介绍,今天咱们来完成一个适合多人博客的作者存档页面。可以显示作者的网站,邮箱和个人履历等这些资料,让读者更多地了解这个作者。 第一步:添加适合你博客的资料选项。 添加符合自己需求的资料选项比如: Twitter、Facebook、Google+、新浪微博、腾讯微博、搜狐微博、我的豆瓣、QQ 空间和删除不符合自己需求的资料选项比如: YIM AIM Jabber 资料选项,在 functions.php 文件中添加如下代码: add_filter( ‘user_contactmethods’, ‘ts_add_contact_fields’ ); function ts_add_contact_fields( $contactmethods ) { $contactmethods[‘twitter’] = ‘Twitter’; $contactmethods[‘googleplus’] = ‘Google+’; $contactmethods[‘facebook’] = ‘Facebook’; $contactmethods[‘weibo’] = ‘新浪微博’; $contactmethods[‘tencent’] = ‘腾讯微博’; $contactmethods[‘sohu’] = ‘搜狐微博’; $contactmethods[‘douban’] = ‘我的豆瓣’; $contactmethods[‘qzone’] = ‘QQ空间’; unset( $contactmethods[‘yim’] ); unset( $contactmethods[‘aim’] ); unset( $contactmethods[‘jabber’] ); […]
WordPress 插件:“即将推出” Widget
出于维护博客更新频率,或精雕细琢文章时督促自己及时完成,我们会在 WordPress 中把该篇文章设为“定时发布”(Schedule)。如果能在网站显示出这些预定发布的文章,应该会吸引读者继续关注你的博客吧? 思路 把即将推出的文章显示在侧边栏是个好办法,不过很多主题都只能以小工具的形式在侧边栏添加内容。所以,不得言的办法,仍稍显不便。实际上,这个功能和 WordPress 中内置的近期文章 Widget 十分相似。 在 WordPress 的 wp-includes/default-widgets.php 第503行(WordPress 3.3.1,其他版本可能不同)处找到相关代码。 关键语句 找到代码: $r = new WP_Query(array(‘posts_per_page’ => $number, ‘no_found_rows’ => true, ‘post_status’ => ‘future’, ‘ignore_sticky_posts’ => true)); 将 publish 改为 future,应该就可以实现功能。 修改后的完整代码 经过一番尝试,改好的 widget 类代码如下: /** * Upcoming_Posts widget class */ class WP_Widget_Upcoming_Posts extends WP_Widget { function __construct() { $widget_ops […]

WordPress 技巧:自定义后台用户联系方式
在 WordPress 后台,个人设置(Profile)中,除了可以设置电子邮件和 Website 之外,还可以设置自己的联系方式,比如 AIM, Yahoo IM, Jabber/Google Talk。但是除了 Gtalk 之外,其他两个中国人基本不用,那么如何去掉我们基本不用的 AIM 和 Yahoo IM,并加上国人常用的 QQ, MSN 和飞信呢? 其实在 WordPress 中实现这样的功能是非常容易的,只需要调用下 custom_contactmethods 这个 WordPress Filter 既可以实现在后台支持常用的 QQ, MSN 和飞信等联系方式,代码如下: <?php /* Plugin Name: Custom Contact Plugin URI: http://wpjam.com/ Description: 自定义博客的联系方式,从 WordPress 默认的 AIM, Yahoo IM 改为中国常见的 QQ, MSN 和飞信。 Version: 1.0 Author: Neekey Author […]

WordPress 批量替换插件 Search & Replace 和中文包
Search and Replace(搜索和替换)是一个允许你搜索和替换数据库中任意文本的 WordPress 插件。 Search and Replace 介绍 Search and Replace 使用非常简单,在后台插件添加页面,搜索 Search and Replace,点击安装并激活之后,到后台 > 工具 > 搜索和替换就能使用到这个插件,然后就可以对 WordPress 数据库中那个数据表中哪个字段进行替换操作,你只需要输入想搜索和替换的文本,点击替换即可。 WordPress 批量替换插件 Search & Replace 这个插件在对博客内容进行大批量相同修改动作的时候,特别有用,比如博客的图片更换了服务器,图片地址都更改了,就可以使用这个插件一次性修改所有的图片地址。 Search and Replace 存在的风险 但是这个插件同样也在存在着风险,因为它是直接使用 SQL 进行文本替换,它直接操作修改了数据库,并且这样的修改时不可撤销的,所以不建议 WordPress 初级用户使用这个插件,对于 WordPress 有一定熟悉的用户,建议使用这个插件进行操作之前,对数据库进行备份,这样万一出错还有修正的机会。 Search and Replace 是直接使用 MySQL 的 Replace 进行替换操作的,所以这个插件是大小写敏感的,并且不支持使用正则表达式进行文本替换,所以这是这个插件小小的一个缺憾,但是它完整的界面和易用性,保证了它能够完成了我们大部分的批量文本修改替换工作,并且这个插件只在后台使用,所以使用之后我们可以直接关闭它,完全不会占用任何系统资源。 Search and Replace 中文版 因为经常使用这个插件,所以就给这个插件制作了中文包,下载地址:Search & Replace 和中文包。 […]
使用 SSH 导入和导出数据库
一般我们是使用 PHPMyAdmin 进行数据库的操作,但是 PHPMyAdmin 是基于 PHP 构建的一个程序,对文件的大小有限制,而有时我们的数据库又特别大,怎么办呢?其实我们还可以通过 SSH 进行数据库导入和导出的操作。 使用 SSH 导出数据库 mysqldump -u 数据库用户名 -p 数据库密码 –add-drop-table –complete-insert 数据库名 | gzip > db_wpjam.sql.gz 导出数据库为 db_wpjam.sql.gz 使用 SSH 导入数据库 先把 db_wpjam.sql.gz 解压缩: gzip -d db_wpjam.sql.gz 然后导入: mysql -u 数据库用户名 -p 数据库密码 数据库名 < db_wpjam.sql.gz –default-character-set=utf8 标签:SSH WordPress 数据库
WordPress 技巧:获取日志中的第一个链接
我们知道 WordPress 日志格式(Post format)中有个 link 的格式,如果你的主题启用了 Post format 功能并且使用了 Link 这个格式,那么你想这篇日志直接链接到日志中的第一个链接。 function get_content_first_link( $content = false){ if ( $content === false ) $content = get_the_content(); preg_match_all(‘/<a.*?href=[\'”](.*?)[\'”].*?>/i’, $content, $links); if($links){ return $links[1][0]; }else { return false; } } 将上面的代码复制到当前主题的 functions.php,然后使用下面的方式引用: <h2><a href=”<?php echo get_content_first_link(get_the_content()); ?>”><?php the_title(); ?></a></h2> 标签:WordPress 技巧
WordPress 技巧:获取日志中的第一个图片地址
我们知道 WordPress 有个日志缩略图的功能(特色图像),需要你自己上传一张图片或者选择已有的图片,然后设置为特色图像,这样就可以在博客首页或者其他地方即可使用。但是这样比较麻烦,需要每次都要上传或者选择下,是否可以有更简洁的方法,其实我们还可以直接获取日志中的第一张图片。 function get_content_first_image($content){ if ( $content === false ) $content = get_the_content(); preg_match_all(‘|<img.*?src=[\'”](.*?)[\'”].*?>|i’, $content, $images); if($images){ return $images[1][0]; }else{ return false; } } 将上面的代码复制到当前主题的 functions.php,然后使用下面的方式引用: <img src=”<?php echo get_content_first_image(get_the_content()); ?>” alt=”<?php the_title_attribute(); ?>” /> 标签:WordPress 技巧

WordPress 技巧:获取上下篇日志的链接、标题、特色图像
我们知道 WordPress 官方提供了 previous_post_link()与 next_post_link() 这两个函数标签来制定当前文章所属分类里面的上下篇文章,但是如果要获取上下篇文章的其他参数,比如链接、标题、特色图像,实现下图的效果:我们该如何处理呢? 涉及到 WordPress 函数标签 get_next_post get_previous_post get_permalink get_the_title get_the_post_thumbnail 实现代码 <div class=”post-PrevNext”> <?php $current_category = get_the_category();//获取当前文章所属分类ID $prev_post = get_previous_post($current_category,”);//与当前文章同分类的上一篇文章 $next_post = get_next_post($current_category,”);//与当前文章同分类的下一篇文章 ?> <div class=”previous_post_link”> <?php if (!empty( $prev_post )): ?> <a href=”<?php echo get_permalink( $prev_post->ID ); ?>”><?php echo get_the_post_thumbnail( $prev_post->ID, ”, ” ); ?></a> 上一篇: <a href=”<?php echo get_permalink( […]
WordPress 技巧:在后台仪表盘显示待审日志列表
前面更换域名的日志中提到我爱水煮鱼将引入更多的作者来给大家介绍 WordPress 和其他互联网开源技术,目前供稿的作者的权限都是投稿者(contributor),它们写好日志之后,状态是待审的,这样就产生了一个问题,有时候是不会注意到有日志需要审核的,所以最好的办法就是在 WordPress 后台的首页(就是仪表盘)直接显示待审日志列表: add_action(‘wp_dashboard_setup’, ‘wpjam_modify_dashboard_widgets’ ); function wpjam_modify_dashboard_widgets() { global $wp_meta_boxes; if(current_user_can(‘manage_options’)){ //只有管理员才能看到 add_meta_box( ‘pending_posts_dashboard_widget’, ‘待审日志’, ‘pending_posts_dashboard_widget_function’,’dashboard’, ‘normal’, ‘core’ ); } } function pending_posts_dashboard_widget_function() { global $wpdb; $pending_posts = $wpdb->get_results(“SELECT * FROM {$wpdb->posts} WHERE post_status = ‘pending’ ORDER BY post_modified DESC”); echo ‘<ul>’; foreach ($pending_posts as $pending_post){ echo ‘<li><a href=”‘.admin_url().’post.php?post=’.$pending_post->ID.’&action=edit”>’.$pending_post->post_title.'</a></li>’; } echo ‘</ul>’; […]

