吞吐设计,致力于打造企业建站第一品牌!

wordpress博客主题建造技巧:模板函数妙用

浏览次数:正在读取   更新时间:2010-03-24

买空间、伺服器就上Tun2(Tun2.COM) 智能主机+国外主机=IDC.Tun2.COM。

在设计WordPress主题时,我发如今functions.php文件里添加一套通用的自界说函数将会年夜年夜提高开辟效率,因为如许我就可以不必每次开辟主题时都需先查找然后复制同样的函数。是以我先搞定functions.php模板然后从那边最先建立主题,模板里把一些需要的预备工作都做好了,包孕:

    • 1、包含 jQuery
    • 2、启用嵌套评论
    • 3、给头部添加Feed链接
    • 4、禁用无用的小对象区域
    • 5、给脚部添加谷歌剖析对象
    • 6、阻止ldquo;read morerdquo;的跳转

这些函数让我喜好的配合点就是它们都异常简单清楚明了、高效。此functions.php 模板今朝包含了十五个函数,而且还在赓续改善中。固然并不是所有人都邑需要利用文件中的所有函数,但我的目标是将这个模板点窜为适合人人利用的通用型模板,可以或许让你经由过程这些真正适用的函数找到主题开辟的冲破口。

在这篇文档里,我先向人人注释下每个函数,然后将所有这十五个函数融合在一路放入到functions.php模板中。你只要复制并粘贴本文最后的代码或是获取 functions.php文件的压缩包 ,就可以经由过程此模板享受WordPress的根本功能,为您的开辟带来的极年夜的便当。

给头部添加feed链接

WordPress2.8今后,你都可以在头部区域添加所有相关的feed链接(主体、评论、分类等),不外这并不是默认的,你需要添加下面的代码来运行:

// add feed links to header
if (function_exists('automatic_feed_links')) {
automatic_feed_links();
} else {
return;
}

这段代码先搜检你是否利用可兼容的WordPress版本,然后再启用主动geed链接。几点留意事项:第一,此方式是假设你没有手动在头部添加任何feed链接。第二,凭据 比来这个Trac ticket,似乎这个功能与add_theme_support已经整合在一路了。

主动包含jQuery

怎样包含 jQuery ? 你可以在主题的functions.php文件里添加下面的代码:

// smart jquery inclusion
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery',

(quot;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.jsquot;), false);
wp_enqueue_script('jquery');
}

这个代码可以确保只包含一份jQuery,并从谷歌伺服器上会见它,节约带宽同时会见时还有缓存上的优势。留意,这段代码必需放在嵌套评论函数的前面才能正常运行。

启用嵌套评论

一般来说,启用嵌套评论需要在头部区域添加一小段代码到wp_head 标签的前面。经由一次小实行后,我发现你可以在functions.php文件里添加这段代码:

// enable threaded comments
function enable_threaded_comments(){
if (!is_admin()) {
if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1))
wp_enqueue_script('comment-reply');
}
}
add_action('get_header', 'enable_threaded_comments');

这有助于连结 lt;headgt;文件的整洁性,留意,这个函数需要放置在jQuery-inclusion函数的后面才能正常运作。

删除Head区域多余东东

WordPressnbsp; lt;headgt;文件里含有年夜量的多余东东, 诸如,版本号、WLW、RSD和索引链接。为了消灭这些不需要信息,你可以在functions.php文件里添加下面的代码:

// remove junk from head
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

给页脚添加谷歌剖析对象

另一个对照让我头疼的工作就是每一次建造站点时都需要在footer.php文件添加谷歌剖析对象的代码。比来我才往functions.php 文件添加了下面的代码并从此不消为这个问题头疼了。

// add google analytics to footer
function add_google_analytics() {
echo 'lt;script src=quot;http://www.google-analytics.com/ga.jsquot; type=quot;text/javascriptquot;gt;lt;/scriptgt;';
echo 'lt;script type=quot;text/javascriptquot;gt;';
echo 'var pageTracker = _gat._getTracker(quot;UA-XXXXX-Xquot;);';
echo 'pageTracker._trackPageview();';
echo 'lt;/scriptgt;';
}
add_action('wp_footer', 'add_google_analytics');

两点留意事项:第一,用你现实的 GA 代码取代ldquo;UA-123456-1rdquo; ;第二,你也可以查看当前谷歌剖析对象的三种选择并点窜响应的代码。今朝,这个函数利用ldquo;ga.jsrdquo;跟踪代码,你也可以改用其他方式。

买空间、伺服器就上Tun2(Tun2.COM) 智能主机+国外主机=IDC.Tun2.COM。

自界说摘要的长度

利用下面这个函数你就可以给摘要指定任何长度而不消受默认的55字的限制。

// custom excerpt length
function custom_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'custom_excerpt_length');

你只需要将 ldquo;20rdquo; 替代为任何你需要的字数。

自界说摘要后 ldquo;继续阅读rdquo;字符串

不管你怎么称谓这个方括号里的省略号[...]rdquo; ,总之这是WordPress默认的紧跟摘要 后面部门,我想删除方括号,利用下面这段代码你可以对它进行任何更改:

// custom excerpt ellipses for 2.9+
function custom_excerpt_more($more) {
return '...';
}
add_filter('excerpt_more', 'custom_excerpt_more');

/* custom excerpt ellipses for 2.8-
function custom_excerpt_more($excerpt) {
return str_replace('[...]', '...', $excerpt);
}
add_filter('wp_trim_excerpt', 'custom_excerpt_more');
*/

你可能已经留意到这里的代码有两个分歧版本,看你利用的是WordPress什么版本。当然最好是利用最新版,是以这里注释了更老版本的方式,不外如果你需要的话也可以利用它。不管是什么版本,利用此方式你仅仅需要用 ldquo;。..rdquo; 或是任何你想要的符号来取代本来的ldquo;[。..]rdquo;,即可。

ldquo;read morerdquo; 链接无法正常跳转

WordPress里最让人难以想象的就是当读者在浏览一篇文档的模式下点击ldquo;read morerdquo; 链接时,页面就会跳转到 ldquo;lt;!--more--gt;rdquo; 标签的位置。假如是跳转到统一页面也就无所谓了,然则假如是从新加载一个新的页面然后读者发现没有了下文也没有任何注释说哪里失足了,这就很让人感觉莫名其妙的。无论怎样,这里有个异常时兴的小函数可以阻止跳转的发生:

// no more jumping for read more link
function no_more_jumping($post) {
return 'lt;a href=quot;'.get_permalink($post-gt;ID).'quot; class=quot;read-morequot;gt;'.'Continue Reading'.'lt;/agt;';
}
add_filter('excerpt_more', 'no_more_jumping');

这段代码无需其他任何东东就可以运行,从此你就可以不必为ldquo;跳转rdquo;费神了。 留意,这也是自界说ldquo;read morerdquo;链接的好方式,你可以在此给它设定各类属性或界说任何你想要文本。

给博客添加图标

假如你想给博客添加个图标,下面的代码将会异常适用。建立完图标后只要上传图片到网站的根目次下即可。只要在functions.php文件的 lt;headgt;区域添加下面的几行代码:

// add a favicon to your
function blog_favicon() {
echo 'lt;link rel=quot;Shortcut Iconquot; type=quot;image/x-iconquot; href=quot;'.get_bloginfo('wpurl').'/favicon.icoquot; /gt;';
}
add_action('wp_head', 'blog_favicon');

你可以随意更改目次,同时确保wp_head包含在你的主题 header.php文件里。

给博客后台添加一个分歧的图标

有需要给WordPress后台添加一个特殊的图标,如许被珍藏为书签或是处置惩罚标签时就加倍轻易认出。只要将图标上传到主题的/images/ 目次下,加上下面的代码即可:

/ add a favicon for your admin
function admin_favicon() {
echo 'lt;link rel=quot;Shortcut Iconquot; type=quot;image/x-iconquot;

href=quot;'.get_bloginfo('stylesheet_directory').'/images/favicon.pngquot; /gt;';
}
add_action('admin_head', 'admin_favicon');

像前面一样,你同样可以随意更改目次。不外最好将后台图标和前台图标分隔隔离分散放在分歧的目次下。

自界说后台上岸图标

是否想行使WordPress图标在各个上岸页面给本身做宣传?那么,你可以将这个WordPress图标替代为其他自界说图片,建立自界说上岸图片,并将其定名为ldquo;custom-login-logo.pngrdquo;将图片上传至主题的/images/ 目次下,用下面的代码:

// custom admin login logo
function custom_login_logo() {
echo 'lt;style type=quot;text/cssquot;gt;
h1 a { background-image:

url('.get_bloginfo('template_directory').'/images/custom-login-logo.png) !important; }
lt;/stylegt;';
}
add_action('login_head', 'custom_login_logo');

这里要害是要你设置路径和图片名称一致。别的,在建立图片的时刻,记住图片的属性:宽为30px, 高为31px,透明GIF花样,头部配景色#464646 。

买空间、伺服器就上Tun2(Tun2.COM) 智能主机+国外主机=IDC.Tun2.COM。

禁用无用的小对象区域

Justin Tadlock介绍了个异常轻易的函数,可用于删除主题中不需要的小对象区域,这是自界说主题必弗成少的一个函数:

// disable all widget areas
function disable_all_widgets($sidebars_widgets) {
//if (is_home())
$sidebars_widgets = array(false);
return $sidebars_widgets;
}
add_filter('sidebars_widgets', 'disable_all_widgets');

这个代码属于即插即用型,不需要任何更改。留意:假如你只想在主页禁用小对象,那么就将第三栏的 ldquo;//rdquo;删除。

删除WordPress更新提醒

我对照憎恶WordPress更新提醒,下面的代码就可以将治理面板的更新提醒删除:

// kill the admin nag
if (!current_user_can('edit_users')) {
add_action('init', create_function('$a', quot;remove_action('init', 'wp_version_check');quot;), 2);
add_filter('pre_option_update_core', create_function('$a', quot;return null;quot;));
}

假如你想要获得更新通知的话,你也可以将这段代码注释失落或是删除失落。

在body_class 与 post_class中到场分类ID

默认情形下,WordPress body_class和 post_class并没有包含当前文档的分类ID。 不外,你可以用下面的代码来实现:

// category id in body and post class
function category_id_class($classes) {
global $post;
foreach((get_the_category($post-gt;ID)) as $category)
$classes [] = 'cat-' . $category-gt;cat_ID . '-id';
return $classes;
}
add_filter('post_class', 'category_id_class');
add_filter('body_class', 'category_id_class');

即使你没有利用分类ID,然则这个函数照样异常好使的,这也是为什么我将这个归入自界说functions.php 模板的必备函数中来。

获取第一个分类ID

当要处置惩罚多个分歧分类时,另一个异常适用的函数可以让你获取当前文档的第一个分类。代码如下:

// get the first category id
function get_first_category_ID() {
$category = get_the_category();
return $category[0]-gt;cat_ID;
}

严厉的即插即播型: 只要在模板文件利用lt;?php get_first_category_ID(); ?gt;来会见数据。

买空间、伺服器就上Tun2(Tun2.COM) 智能主机+国外主机=IDC.Tun2.COM。

整合以上所有代码

如开首承诺,这里将完整的代码贴出来与人人分享:

lt;?php // custom functions.php template @ digwp.com

// add feed links to header
if (function_exists('automatic_feed_links')) {
automatic_feed_links();
} else {
return;
}

// smart jquery inclusion
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery',

(quot;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.jsquot;), false, '1.3.2');
wp_enqueue_script('jquery');
}

// enable threaded comments
function enable_threaded_comments(){
if (!is_admin()) {
if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1))
wp_enqueue_script('comment-reply');
}
}
add_action('get_header', 'enable_threaded_comments');

// remove junk from head
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

// add google analytics to footer
function add_google_analytics() {
echo 'lt;script

src=quot;http://www.google-analytics.com/ga.jsquot; type=quot;text/javascriptquot;gt;lt;/scriptgt;';
echo 'lt;script type=quot;text/javascriptquot;gt;';
echo 'var pageTracker = _gat._getTracker(quot;UA-XXXXX-Xquot;);';
echo 'pageTracker._trackPageview();';
echo 'lt;/scriptgt;';
}
add_action('wp_footer', 'add_google_analytics');

// custom excerpt length
function custom_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'custom_excerpt_length');

// custom excerpt ellipses for 2.9+
function custom_excerpt_more($more) {
return '...';
}
add_filter('excerpt_more', 'custom_excerpt_more');

/* custom excerpt ellipses for 2.8-
function custom_excerpt_more($excerpt) {
return str_replace('[...]', '...', $excerpt);
}
add_filter('wp_trim_excerpt', 'custom_excerpt_more');
*/

// no more jumping for read more link
function no_more_jumping($post) {
return 'lt;a href=quot;'.get_permalink($post-gt;ID).'

quot; class=quot;read-morequot;gt;'.'Continue Reading'.'lt;/agt;';
}
add_filter('excerpt_more', 'no_more_jumping');

// add a favicon to your
function blog_favicon() {
echo 'lt;link rel=quot;Shortcut Iconquot; type=quot;image/x-iconquot;

href=quot;'.get_bloginfo('wpurl').'/favicon.icoquot; /gt;';
}
add_action('wp_head', 'blog_favicon');

// add a favicon for your admin
function admin_favicon() {
echo 'lt;link rel=quot;Shortcut Iconquot; type=quot;image/x-iconquot;

href=quot;'.get_bloginfo('stylesheet_directory').'/images/favicon.pngquot; /gt;';
}
add_action('admin_head', 'admin_favicon');

// custom admin login logo
function custom_login_logo() {
echo 'lt;style type=quot;text/cssquot;gt;
h1 a { background-image:

url('.get_bloginfo('template_directory').'/images/custom-login-logo.png) !important; }
lt;/stylegt;';
}
add_action('login_head', 'custom_login_logo');

// disable all widget areas
function disable_all_widgets($sidebars_widgets) {
//if (is_home())
$sidebars_widgets = array(false);
return $sidebars_widgets;
}
add_filter('sidebars_widgets', 'disable_all_widgets');

// kill the admin nag
if (!current_user_can('edit_users')) {
add_action('init', create_function('$a',

quot;remove_action('init', 'wp_version_check');quot;), 2);
add_filter('pre_option_update_core', create_function('$a', quot;return null;quot;));
}

// category id in body and post class
function category_id_class($classes) {
global $post;
foreach((get_the_category($post-gt;ID)) as $category)
$classes [] = 'cat-' . $category-gt;cat_ID . '-id';
return $classes;
}
add_filter('post_class', 'category_id_class');
add_filter('body_class', 'category_id_class');

// get the first category id
function get_first_category_ID() {
$category = get_the_category();
return $category[0]-gt;cat_ID;
}

?gt;

假如喜好的话,你可以下载functions.php 模板文件压缩包

原文:WordPress functions.php Template with 15 Essential Customnbsp;Functions(译文WordPress拉)

关于我们

吞吐设计——企业建站首选品牌

吞吐设计,一个品牌策划与IT技术整合运营的互动机构,一个理念和格调领先的团队,一个组织严密,但又灵活的设计团队。我们综合考虑网站在传播营销中的作用,为您提供各种互动策略,帮助您在复杂的网络环境中战胜对手。 吞吐设计集品牌策划、设计实施、互动媒体、网站建设于一体,致力于服务重视网络形象价值的客户,竭力为客户提供具备真正价值的网络营销和品牌形象体系...了解更多 »

公告:
  • 2009-11-09Tun2官网改版
  • QQ: 88009791
    E-mail: zheng_hui#126.com
    Tel: 150 02 02 02 67