WordPress开发者在开发主题时经常会修改 functions.php 文件,这是很常见的现象。
为什么?因为 functions.php 让你能够控制主题特定的功能。通过简单的代码添加和/或修改,你可以覆盖现有的网站功能并以高效的方式执行多个功能,而不是使用可能笨重且不安全的插件来达到同样的目的。
虽然添加几个插件也能完成任务,但通过主题文件夹中的 functions.php 文件来改变WordPress网站的方法既快捷又简单。

什么是 functions.php 文件,如何访问它?
functions.php 文件基本上相当于一个WordPress插件。
你可以添加代码来调用函数并更改客户端网站的功能和特性。简而言之,你可以随意在该文件中添加任意数量的函数,而插件通常只专注于一个任务,你必须安装多个插件才能覆盖不同的功能领域。
如果你已经创建了WordPress网站,但当前主题没有 functions 文件,只需创建一个名为 functions.php 的文件并将其放在 /wp-content/themes/yourthemename/ 子目录中。如果你已有 functions.php 文件,或者想确认客户端网站是否有该文件,请使用 FTP客户端(如 FileZilla)导航到 /wp-content/themes/yourthemename/ 子目录并查找该文件。

找到或创建文件后,可以随意添加任何你想要的代码。

请注意,如果你有一个插件调用了与 functions.php 中相同的函数,可能会导致网站出现问题。
让我们来看看使用 functions.php 文件更改客户端WordPress网站的最酷方法。
1. 文章缩略图(特色图片)
虽然许多主题都支持添加文章缩略图或特色图片,但你也可以通过 functions.php 文件添加此功能:
add_theme_support( 'post-thumbnails' );
以下代码必须包含在你想让缩略图显示的特定循环中:
<?php the_post_thumbnail(); ?>
2. 自动更新网站的版权日期
没有必要在每个新年来临时都手动更改网站底部的版权日期。你很可能会忘记这件事,然后网站看起来就像去年以来都没有更新过。通过在 functions.php 文件中添加以下代码使版权日期动态化:
function copyright($start_year, $site_name) {
$year = date('Y');
echo "© Copyright ";
echo $start_year;
if($start_year != $year) echo "-$year";
echo ", $site_name, All Rights Reserved.";
}
之后,你需要找到 footer 文件并在其中放置以下代码。请注意,年份参数是公司或网站成立的年份,而不是当前年份。
<div>
<?php copyright(2011, "Your Company Name"); ?>
</div>
3. 修改网站的默认Gravatar头像

如果你转到WordPress的设置 > 讨论,你可以在一个区域中更改访问者在你的客户网站上发表评论时的默认Gravatar。
为什么不让Gravatar与网站主题相匹配呢?将下面的代码添加到functions.php文件中,你就可以开始了:
add_filter( 'avatar_defaults', 'newgravatar' );
function newgravatar ($avatar_defaults) {
$myavatar = get_bloginfo('template_directory') . '/images/mygravatar.gif';
请确保在上面为你的Gravatar指定正确的文件位置,并在上面所有内容之后复制代码,同时更改CompanyName区域。
$avatar_defaults[$myavatar] = "CompanyName";
return $avatar_defaults;
}
4. 为你的客户网站添加Favicon

Favicon是当有人访问网站时在浏览器标签中显示的小图标。有很多插件可以添加Favicon,但真的没有理由浪费资源使用插件。试试下面的代码,只需将“thepathtoyourimagegoeshere”区域替换为你想要的Favicon图像的文件路径。
function blog_favicon() {
echo '<link rel="Shortcut Icon" type="image/x-icon" href="'.get_bloginfo('wpurl').'thepathtoyourimagegoeshere" />';
}
更改上面代码中你的图像路径,并在下面添加以下代码:
add_action('wp_head', 'blog_favicon');
5. Google Analytics
这是functions.php文件中更常见的修改之一,因为它链接了一个Google Analytics账户,这样客户可以看到访问者的更多信息。
下面的代码效果很好,但你必须添加你的Google Analytics代码才能将其链接到账户。
<?php
add_action('wp_footer', 'add_googleanalytics');
function add_googleanalytics() { ?>
// Place the code you get from Google Analytics here
<?php } ?>
6. 自定义页脚
页脚通常包含默认文字,为什么不将其更改为匹配客户的品牌呢?你可以将代码添加到functions.php文件中,但有几个区域需要更改,以便你的页脚为网站定制。
function remove_footer_admin () {
echo "Whatever Text You Want";
}
add_filter('admin_footer_text', 'remove_footer_admin');
7. 自动调整和裁剪特色图像
这使得调整特色图像的大小变得非常快。添加下面的代码,这样图像可以被裁剪和缩放到完美尺寸。
检查以下行是否在functions.php中。如果没有,请添加它:
add_theme_support( 'post-thumbnails' );
同时,在functions文件中放置以下代码:
add_image_size('imagename', 200, 200, true);
将图像名称更改为你想要的,并修改第一个数字作为裁剪宽度,第二个数字作为裁剪高度。
将以下代码放在你想看到图像的地方:
<?php the_post_thumbnail('imagename'); ?>
8. 维护模式

维护模式非常适合你在处理客户网站时显示一个友好的页面。
function maintenance_mode() {
if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {wp_die('Maintenance.');}
}
需要包含以下行才能使这个功能生效。如果你想移除维护模式并让人们看到你的网站,只需注释掉下面这一行。
add_action('get_header', 'maintenance_mode');
还有一些插件,比如上图中的那个,可以帮助你在这种模式下发挥更多创意。
9. 最小字符评论限制

如果客户对评论过长或过短有意见,你可以提供解决方案。当有人在 functions.php 文件中使用以下代码发布过长或过短的评论时,显示 错误警告:
new GW_Minimum_Characters( array(
'form_id' => 524,
'field_id' => 1,
'min_chars' => 10,
'max_chars' => 500,
'min_validation_message' => __( 'Sorry! You need more than %s characters.' ),
'max_validation_message' => __( 'Sorry! You need less than %s characters.' )
) );
可以随意更改 ID、字符限制和验证消息。(请注意,你必须将此代码段与 Gravity Forms 一起使用。)
10. 为你的网页设计客户显示 Twitter 粉丝数
这个功能来自 Rarst。它允许你在网站的任何位置显示 Twitter 粉丝数,而无需使用臃肿的插件。
function rarst_twitter_user( $username, $field, $display = false ) {
$interval = 3600;
$cache = get_option('rarst_twitter_user');
$url = 'http://api.twitter.com/1/users/show.json?screen_name='.urlencode($username);
if ( false == $cache )
$cache = array();
// if first time request add placeholder and force update
if ( !isset( $cache[$username][$field] ) ) {
$cache[$username][$field] = NULL;
$cache[$username]['lastcheck'] = 0;
}
// if outdated
if( $cache[$username]['lastcheck'] < (time()-$interval) ) {
// holds decoded JSON data in memory
static $memorycache;
if ( isset($memorycache[$username]) ) {
$data = $memorycache[$username];
}
else {
$result = wp_remote_retrieve_body(wp_remote_request($url));
$data = json_decode( $result );
if ( is_object($data) )
$memorycache[$username] = $data;
}
if ( is_object($data) ) {
// update all fields, known to be requested
foreach ($cache[$username] as $key => $value)
if( isset($data->$key) )
$cache[$username][$key] = $data->$key;
$cache[$username]['lastcheck'] = time();
}
else {
$cache[$username]['lastcheck'] = time()+60;
}
update_option( 'rarst_twitter_user', $cache );
}
if ( false != $display )
echo $cache[$username][$field];
return $cache[$username][$field];
}
确定在你的客户网站上放置计数器的位置,并在适当的循环中包含以下代码:
echo rarst_twitter_user('codeinwp', 'name').' has '.
rarst_twitter_user('codeinwp', 'followers_count').' followers after '.
rarst_twitter_user('codeinwp', 'statuses_count').' updates.';
你可能也有兴趣阅读:
如果你对以上使用 functions.php 文件更改 WordPress 网站运行方式的方法有任何问题,请在评论部分告诉我们。如果你有其他很酷的技巧可以加入这个列表,请分享你的想法。
…
别忘了参加我们关于加速 WordPress 网站的速成课程。在下方了解更多:
如何加速你的 WordPress 网站
通过一些简单的修复,你可以将加载时间减少 50-80% 🚀
Newsletter Form – Sidebar
名字 *
你的邮箱 *
立即订阅!
如果你是人类,请留空此字段。
通过在上方输入您的电子邮件,即表示您订阅了我们的每周新闻简报。您可以随时改变主意。我们尊重您的收件箱和隐私。
布局和展示:Chris Fitzgerald 和 Karol K.




