【wordpress】一些优化代码汇总-functions.php(模板函数)

//判断当前语言
function is_lang($lang) {
   return (ICL_LANGUAGE_CODE == $lang) ? true : false;
}

//利用wp的过滤器来修复图片上传http错误
add_filter( 'wp_image_editors', 'change_graphic_lib' );
function change_graphic_lib($array) {
  return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}

//取消WordPress的自动保存的草稿功能
function disableAutoSave(){    wp_deregister_script('autosave');}
add_action( 'wp_print_scripts', 'disableAutoSave' );
 
    //移除WordPress短代码中自动添加的 br 和 p 标签
    remove_filter( 'the_content', 'wpautop' );
    add_filter( 'the_content', 'wpautop' , 12);

    //去除谷歌字体
    if (!function_exists('remove_wp_open_sans')) :
    function remove_wp_open_sans() {
    wp_deregister_style( 'open-sans' );
    wp_register_style( 'open-sans', false );
    }
	// 前台删除Google字体CSS
    add_action('wp_enqueue_scripts', 'remove_wp_open_sans');
	// 后台删除Google字体CSS
    add_action('admin_enqueue_scripts', 'remove_wp_open_sans');
    endif;

    //删除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_filter( 'the_content_feed',  'wp_staticize_emoji');
    remove_filter( 'comment_text_rss',  'wp_staticize_emoji');
    remove_filter( 'wp_mail',       'wp_staticize_emoji_for_email');

    //移除wp-json链接
    add_filter('rest_enabled', '_return_false');
    add_filter('rest_jsonp_enabled', '_return_false');
    remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );

    //禁用embeds功能
    function disable_embeds_init() {
        /* @var WP $wp */
        global $wp;
        $wp->public_query_vars = array_diff( $wp->public_query_vars, array(
            'embed',
        ) );
        remove_action( 'rest_api_init', 'wp_oembed_register_route' );
        add_filter( 'embed_oembed_discover', '__return_false' );
        remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
        remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
        remove_action( 'wp_head', 'wp_oembed_add_host_js' );
        add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
        add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
    }
    add_action( 'init', 'disable_embeds_init', 9999 );
    function disable_embeds_tiny_mce_plugin( $plugins ) {
        return array_diff( $plugins, array( 'wpembed' ) );
    }
    function disable_embeds_rewrites( $rules ) {
        foreach ( $rules as $rule => $rewrite ) {
            if ( false !== strpos( $rewrite, 'embed=true' ) ) {
                unset( $rules[ $rule ] );
            }
        }
        return $rules;
    }
    function disable_embeds_remove_rewrite_rules() {
        add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
        flush_rewrite_rules();
    }
    register_activation_hook( __FILE__, 'disable_embeds_remove_rewrite_rules' );
    function disable_embeds_flush_rewrite_rules() {
        remove_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
        flush_rewrite_rules();
    }
    register_deactivation_hook( __FILE__, 'disable_embeds_flush_rewrite_rules' );

    remove_action( 'wp_head', 'feed_links_extra', 3 ); //去除评论feed
    remove_action( 'wp_head', 'feed_links', 2 ); //去除文章feed
    remove_action( 'wp_head', 'rsd_link' ); //针对Blog的远程离线编辑器接口
    remove_action( 'wp_head', 'wlwmanifest_link' ); //Windows Live Writer接口
    remove_action( 'wp_head', 'index_rel_link' ); //移除当前页面的索引
    remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); //移除后面文章的url
    remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); //移除最开始文章的url
    remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );//自动生成的短链接
    remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); ///移除相邻文章的url
    remove_action( 'wp_head', 'wp_generator' ); // 移除版本号

    //通过多说服务器加速Gravatar头像
    function mytheme_get_avatar($avatar) {
    $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"gravatar.duoshuo.com",$avatar);
    return $avatar;
    }
    add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );

//add_filter('pre_site_transient_update_core', create_function('$a', "return null;")); // 关闭核心提示  
add_filter('pre_site_transient_update_plugins', create_function('$a', "return null;")); // 关闭插件提示  
add_filter('pre_site_transient_update_themes', create_function('$a', "return null;")); // 关闭主题提示  
remove_action('admin_init', '_maybe_update_core'); // 禁止 WordPress 检查更新  
remove_action('admin_init', '_maybe_update_plugins'); // 禁止 WordPress 更新插件  
remove_action('admin_init', '_maybe_update_themes'); // 禁止 WordPress 更新主题 

//打开wordpress媒体库隐藏的上传路径选项
if(get_option('upload_path')=='wp-content/uploads' || get_option('upload_path')==null) { update_option('upload_path',WP_CONTENT_DIR.'/uploads'); }

 

禁用WooCommerce样式表

当您安装WooCommerce时,它会为您的网站添加一些样式表,这些样式表随页面一起加载。如果您使用自定义主题(可能),则可以停止加载这些样式表。

add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );

写入functions.php保存即可。

如果要将自己的样式表排入队列,使用下方代码

/**  Enqueue your own stylesheet */
function wp_enqueue_woocommerce_style(){
  wp_register_style( 'mytheme-woocommerce', get_template_directory_uri().'/css/woocommerce.css' );
  if ( class_exists( 'woocommerce' ) ) {
    wp_enqueue_style( 'mytheme-woocommerce' );
  }
}
add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style' );

写入functions.php保存即可。

购物车刷新

WooCommerce内置功能可以在不刷新页面的情况下用户添加了新的商品后自动刷新购物车。

这个体验不错,但是加载的时间比较长。所以说各有利弊。在大型网站上,WooCommerce的购物车刷新可能需要好几秒钟。这个功能不是必要的,我们可以禁用他。

add_action( 'wp_print_scripts', 'nuke_cart_fragments', 100 );
function nuke_cart_fragments() {
  wp_dequeue_script( 'wc-cart-fragments' );
  return true;
}
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() {
  if (is_front_page()) wp_dequeue_script('wc-cart-fragments');
}

写入functions.php保存即可。

注意:禁用后购物车不会自动刷新,但是刷新页面时购物车会自动更新到最新的商品列表。

WooCommerce小部件

WooCommerce默认预先加载了许多小部件。大多数主题都有自己的功能来替换这些小部件,并且保持它们的启用会增加加载时间,同时不提供任何其他价值。使用下方代码来禁用

add_action( 'widgets_init', 'remove_woo_widgets' );
function remove_woo_widgets() {
  unregister_widget( 'WC_Widget_Recent_Products' );
  unregister_widget( 'WC_Widget_Featured_Products' );
  unregister_widget( 'WC_Widget_Product_Categories' );
  unregister_widget( 'WC_Widget_Product_Tag_Cloud' );
  unregister_widget( 'WC_Widget_Cart' );
  unregister_widget( 'WC_Widget_Layered_Nav' );
  unregister_widget( 'WC_Widget_Layered_Nav_Filters' );
  unregister_widget( 'WC_Widget_Price_Filter' );
  unregister_widget( 'WC_Widget_Product_Search' );
  unregister_widget( 'WC_Widget_Top_Rated_Products' );
  unregister_widget( 'WC_Widget_Recent_Reviews' );
  unregister_widget( 'WC_Widget_Recently_Viewed' );
  unregister_widget( 'WC_Widget_Best_Sellers' );
  unregister_widget( 'WC_Widget_Onsale' );
  unregister_widget( 'WC_Widget_Random_Products' );
}

写入functions.php保存即可。

删除WooCommerce Meta Boxes

当您安装WooCommerce时,它会在您网站的后端添加许多元框。这些元框用途很少,您可以禁用它们以改善后端加载时间。否则的话我们后台页面大概时间将会较长

add_action('edit_form_after_title', 'my_custom_post_edit_form', 100);
/**
* remove all meta boxes, and display the form
*/
function my_custom_post_edit_form($post) {
  global $wp_meta_boxes;
  // remove all meta boxes
  $wp_meta_boxes = array('my_custom_post_type' => array(
    'advanced' => array(),
    'side' => array(),
    'normal' => array(),
  ));
  // show my admin form
  require dirname(__FILE__) . '/views/my-custom-post-edit-form.php';
}

写入functions.php保存即可。

 

你可能感兴趣的:(wordpress)