WordPress 函数文件的实用技巧

WordPress 主题有一个强大的 functions.php 文件。在 functions.php 文件中,您可以向 WordPress 主题添加独特功能。它可以用来连接到 WordPress 的核心功能,使您的主题更加模块化,可扩展性和功能性。

本文收集了一些对您的 WordPress 函数文件最有用的技巧。

删除 WordPress 版本号

只需在您的函数文件中添加这段代码即可。

function wpb_remove_version() {
return '';
}
add_filter('the_generator', 'wpb_remove_version');

您应该始终使用最新版本的 WordPress。

添加自定义仪表盘徽标

想要让你的 WordPress 管理区变得 “看不出是 WordPress”?添加一个自定义仪表板标志是这个过程的第一步。

首先,您需要将您的自定义徽标上传到您的主题的 images 文件夹中,重命名为 custom-logo.png。确保你的自定义标志是 16×16 像素的大小。

之后,你可以将这段代码添加到你的主题的函数文件中。

function wpb_custom_logo() {
echo '
<style type="text/css">
#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
background-image: url(' . get_bloginfo('stylesheet_directory') . '/images/custom-logo.png) !important;
background-position: 0 0;
color:rgba(0, 0, 0, 0);
}
#wpadminbar #wp-admin-bar-wp-logo.hover > .ab-item .ab-icon {
background-position: 0 0;
}
</style>
';
}
//hook into the administrative header output
add_action('wp_before_admin_bar_render', 'wpb_custom_logo');

隐藏管理工具栏(在开发过程中)

show_admin_bar( false );

隐藏登录错误

隐藏登录错误/提示,并用自定义的消息替换掉。

function hide_login_errors(){    
    return 'Oepsss, you broke me!';
}
add_filter( 'login_errors' , 'hide_login_errors' );

禁用 XML-RPC

如果您不想远程发布到您的博客文章,则应禁用此功能。这也将完全禁用整个 XML-RPC 类。

add_filter( 'wp_xmlrpc_server_class' , '__return_false' );
add_filter( 'xmlrpc_enabled' , '__return_false' );

自动更新 WordPress

这将自动更新您的 WordPress 核心程序(包含主要和次要更新)。

define( 'WP_AUTO_UPDATE_CORE' , true );

自动更新所有插件

define( 'WP_AUTO_UPDATE_CORE' , true );

自动更新所有主题

add_filter( 'auto_update_theme' , '__return_true' );

更改 WordPress 中的默认 Gravatar 头像

见过博客上默认的神秘人头像吗?你可以轻松地用你自己的自定义头像来代替它。只需上传你想使用的图片作为默认头像,然后将这段代码添加到你的函数文件中。

function wpb_new_gravatar ($avatar_defaults) {
	$myavatar = '头像的网址,包括 HTTP(S) 前缀';
	$avatar_defaults[$myavatar] = "Default Gravatar";
	return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'wpb_new_gravatar' );

颜色转换为 RGB

输入函数十六进制代码(例如 #eeeeee),返回 RGB 值数组。

function hexrgb($color){
    if (isset($color[0])&&$color[0] == '#')
        $color = substr($color, 1);

    if (strlen($color) == 6)
        list($r, $g, $b) = array($color[0].$color[1],
                                 $color[2].$color[3],
                                 $color[4].$color[5]);
    elseif (strlen($color) == 3)
        list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
    else
        return false;

    $r = hexdec($r); $g = hexdec($g); $b = hexdec($b);

    return $r.', '.$g.', '.$b;
}

这是一个辅助开发用的函数。

删除 WordPress 中的默认图片链接

默认情况下,当您在 WordPress 文章中插入图片时,它会自动链接到图片文件或附件页面。如果用户点击图片,他们就会被带到一个新的页面,而不是您的文章。

以下是您如何轻松地阻止 WordPress 自动链接到附件页面的方法。您所要做的就是在您的函数文件中添加这段代码。

function wpb_imagelink_setup() {
    $image_set = get_option( 'image_default_link_type' );
     
    if ($image_set !== 'none') {
        update_option('image_default_link_type', 'none');
    }
}
add_action('admin_init', 'wpb_imagelink_setup', 10);

用第三方库替换默认的 WordPress jQuery 脚本

如果你确定你想改变核心 jQuery 版本,在这种情况下,你可以在你的主题的 functions.php 文件中添加以下代码。

//=以谷歌提供的 jQ 为例
function modify_jquery() {
	if (!is_admin()) {
		wp_deregister_script('jquery-core');
		wp_register_script('jquery-core', 'http://ajax.lug.ustc.edu.cn/ajax/libs/jquery/1.11.3/jquery.min.js', true, '1.11.3');
		wp_enqueue_script('jquery-core');
		wp_deregister_script('jquery-migrate');
		wp_register_script('jquery-migrate', 'http://cdn.yourdomain.com/wp-includes/js/jquery/jquery-migrate.min.js', true, '1.2.1');
		wp_enqueue_script('jquery-migrate');
	}
}
add_action( 'init', 'register_jquery' );

禁用对文章类型中的评论和 trackback。

function df_disable_comments_post_types_support() {
	$post_types = get_post_types();
	foreach ($post_types as $post_type) {
		if(post_type_supports($post_type, 'comments')) {
			remove_post_type_support($post_type, 'comments');
			remove_post_type_support($post_type, 'trackbacks');
		}
	}
}
add_action('admin_init', 'df_disable_comments_post_types_support');

完全禁用评论功能

以符合 “非交互式网站” 的要求。

每一段代码片段都可单独使用。

禁用评论框

function df_disable_comments_status() {
	return false;
}
add_filter('comments_open', 'df_disable_comments_status', 20, 2);
add_filter('pings_open', 'df_disable_comments_status', 20, 2);

隐藏现有评论

function df_disable_comments_hide_existing_comments($comments) {
	$comments = array();
	return $comments;
}
add_filter('comments_array', 'df_disable_comments_hide_existing_comments', 10, 2);

删除后台菜单中的 “评论” 页

function df_disable_comments_admin_menu() {
	remove_menu_page('edit-comments.php');
}
add_action('admin_menu', 'df_disable_comments_admin_menu');

重定向任何试图访问评论页面的用户

function df_disable_comments_admin_menu_redirect() {
	global $pagenow;
	if ($pagenow === 'edit-comments.php') {
		wp_redirect(admin_url()); exit;
	}
}
add_action('admin_init', 'df_disable_comments_admin_menu_redirect');

从仪表盘中删除评论 metabox。

function df_disable_comments_dashboard() {
	remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
}
add_action('admin_init', 'df_disable_comments_dashboard');

删除管理工具栏的评论链接

function df_disable_comments_admin_bar() {
	if (is_admin_bar_showing()) {
		remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
	}
}
add_action('init', 'df_disable_comments_admin_bar');

隐藏管理工具栏中的评论图标

add_action( 'admin_bar_menu', 'clean_admin_bar', 999 );
function clean_admin_bar( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'comments' );
}

https://www.buyprotheme.com/useful-tricks-for-the-wordpress-functions-file/