让 WordPress 飞起来的几个 function

禁用谷歌字体

如果使用了 WP 默认的主题那么需要通过插件解决: Remove Open Sans font Link from WP core

如果是其他主题,添加:

/**
 * WordPress 后台禁用Google Open Sans字体,加速网站
 */
add_filter( 'gettext_with_context', 'wpdx_disable_open_sans', 888, 4 );
function wpdx_disable_open_sans( $translations, $text, $context, $domain ) {
  if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
    $translations = 'off';
  }
  return $translations;
}

替换 Gravatar
使用 V2EX 的 Gravatar 镜像来代替原来的,支持 HTTPS。

function get_ssl_avatar($avatar) {
   $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://cdn.v2ex.co/gravatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
   return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

强制jquery库文件底部载入
将 JS 放到最后加载,有利于提高网站加载效率

//强制jquery库文件底部载入
function ds_print_jquery_in_footer( &$scripts) {
    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'ds_print_jquery_in_footer' );

去除加载的css和js后面的版本号
去掉版本查询提高效率,看着也舒心

//去除加载的css和js后面的版本号
/** Remove Query strings from Static Resources. */
function _remove_script_version( $src ){
    $parts = explode( '?', $src );
    return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'pre_option_link_manager_enabled', '__return_true' );

删除 WP 头不需要的代码
这个去掉了,可以有效精简 WP 多余的nearing

//删除 wp_head 中无关紧要的代码
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'start_post_rel_link');
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'adjacent_posts_rel_link');

禁用 Emoji 功能
WP 的 EMOJI 图片国内无法使用,直接禁用

/* 禁用 Emoji 功能 */
remove_action('admin_print_scripts',    'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
#remove_action('wp_head',       'print_emoji_detection_script', 7);
remove_action('wp_print_styles',    'print_emoji_styles');
remove_action('embed_head',     'print_emoji_detection_script');
remove_filter('the_content_feed',   'wp_staticize_emoji');
remove_filter('comment_text_rss',   'wp_staticize_emoji');
remove_filter('wp_mail',        'wp_staticize_emoji_for_email');

屏蔽文章 Embed 功能
多余功能,去掉

remove_action('rest_api_init', 'wp_oembed_register_route');
remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4);
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10 );
remove_filter('oembed_response_data',   'get_oembed_response_data_rich',  10, 4);
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');

关闭 XML-RPC 功能

// 关闭 XML-RPC 功能 
add_filter('xmlrpc_enabled', '__return_false');

屏蔽 REST API

// 屏蔽 REST API
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');

移除头部 wp-json 标签和 HTTP header 中的 link

//移除头部 wp-json 标签和 HTTP header 中的 link 
remove_action('wp_head', 'rest_output_link_wp_head', 10 );
remove_action('template_redirect', 'rest_output_link_header', 11 );

屏蔽若干无用功能

// Disable auto-embeds for WordPress >= v3.5
remove_filter( 'the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
add_filter('automatic_updater_disabled', '__return_true');  // 彻底关闭自动更新
remove_action('init', 'wp_schedule_update_checks'); // 关闭更新检查定时作业
wp_clear_scheduled_hook('wp_version_check');            // 移除已有的版本检查定时作业
wp_clear_scheduled_hook('wp_update_plugins');       // 移除已有的插件更新定时作业
wp_clear_scheduled_hook('wp_update_themes');            // 移除已有的主题更新定时作业
wp_clear_scheduled_hook('wp_maybe_auto_update');        // 移除已有的自动更新定时作业
remove_action( 'admin_init', '_maybe_update_core' );        // 移除后台内核更新检查
remove_action( 'load-plugins.php', 'wp_update_plugins' );   // 移除后台插件更新检查
remove_action( 'load-update.php', 'wp_update_plugins' );
remove_action( 'load-update-core.php', 'wp_update_plugins' );
remove_action( 'admin_init', '_maybe_update_plugins' );
remove_action( 'load-themes.php', 'wp_update_themes' );     // 移除后台主题更新检查
remove_action( 'load-update.php', 'wp_update_themes' );
remove_action( 'load-update-core.php', 'wp_update_themes' );
remove_action( 'admin_init', '_maybe_update_themes' );

转载自:https://www.mf8.biz/use-function-make-wp-fast/

限制IP访问 WordPress 登录画面

1, Apache httpd 的设定方法
举例来说,只允许 IP 地址「192.168.2.1」访问,按照如下设定,写入 Apache 的配置文件「httpd.conf」或者网站根目录下的「.htaccess」都可以。

<Files "wp-login.php">
    Order Deny,Allow
    Deny from all
    Allow from 192.168.2.1
</Files>

只允许某 IP 地址段「192.168.2.*」访问,则为:

<Files "wp-login.php">
    Order Deny,Allow
    Deny from all
    Allow from 192.168.2
</Files>

允许多个 IP 地址「192.168.2.1」「192.168.2.2」访问,则为:

<Files "wp-login.php">
    Order Deny,Allow
    Deny from all
    Allow from 192.168.2.1 192.168.2.2
</Files>

2,没有固定 IP 的对应方法
如果你已经有了 VPS,挂上 socks5 代理。

how to writes new posts into wordpress programatically

Use the wp_insert_post() function, which takes an array as a parameter.

<?php
/** Make sure that the WordPress bootstrap has run before continuing. */
require(dirname(__FILE__) . '/wp-load.php');

global $user_ID;
$new_post = array(
	'post_title' => 'My New Post',
	'post_content' => 'Lorem ipsum dolor sit amet...',
	'post_status' => 'publish',
	'post_date' => date('Y-m-d H:i:s'),
	'post_author' => $user_ID,
	'post_type' => 'post',
	'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);
?>
  • post_title: the name of the post.
  • post_content: the content of the post
  • post_status: the post status (published, draft, etc)
  • post_date: use date() or specify a custom date
  • post_author: Author id of the post author
  • post_type: Can be post, page, or a custom post type
  • post_category: An array of categories ids

SQL 修改 wp_ 表前缀

注:因为涉及数据库,会有不可逆的后果,建议先带套备份

首先,修改配置文件 wp-config.php 中 “wp_ ”为自定义表前缀,比如:wp_mf8_。 登录 MySQL 数据库,运行以下SQL语句,修改默认表前缀为自定义前缀:

RENAME table `wp_comments` TO `wp_mf8_comments`;
RENAME table `wp_links` TO `wp_mf8_links`;
RENAME table `wp_options` TO `wp_mf8_options`;
RENAME table `wp_postmeta` TO `wp_mf8_postmeta`;
RENAME table `wp_posts` TO `wp_mf8_posts`;
RENAME table `wp_terms` TO `wp_mf8_terms`;
RENAME table `wp_term_relationships` TO `wp_mf8_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_mf8_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_mf8_usermeta`;
RENAME table `wp_users` TO `wp_mf8_users`;

现在需要修改选项和 usermeta 表,让一切工作。 输入以下SQL查询:

SELECT * FROM `wp_mf8_usermeta` WHERE `meta_key` LIKE '%wp_%'

转移 wp-config.php 文件

因为 wp-config.php 默认就是在根目录的,很多人就直接会对准这个目标已经攻击,因此我们还可以让 wp-config.php 文件搬个家~

清空 wp-config,php 的内容,加入:

<?php
if ( !defined('ABSPATH') )
  define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'path/to/wp-config.php');