网站LOGO
静若安然
页面加载中
10月6日
网站LOGO 静若安然
记录个人学习生活和成长历程
菜单
  • 热评
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    WordPress 维护优化
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    WordPress 维护优化

    Akria · 原创 ·
    wordpress博客主题 · 博客主题
    共 8273 字 · 约 3 分钟 · 1299
    本文最后更新于2024年03月06日,已经过了213天没有更新,若内容或图片失效,请留言反馈

    数据库链接替换

    • 连接数据库,选中表并执行以下SQL命令,注意修改表前缀
    sql 代码:
    UPDATE wp_options SET option_value = replace(option_value, '旧地址', '新地址') WHERE option_name = 'home' OR option_name = 'siteurl';//替换设置
    UPDATE wp_posts SET post_content = replace(post_content, '旧地址', '新地址');//替换文章
    UPDATE wp_postmeta SET meta_value = replace(meta_value, '旧地址', '新地址');//替换评论
    UPDATE wp_comments SET comment_content = replace(comment_content , '旧地址', '新地址');//替换评论
    UPDATE wp_posts SET guid = REPLACE (guid, '旧地址', '新地址') WHERE post_type = 'attachment';//替换附件

    显示耗时,查询次数及内存

    • 首先在主题functions.php中加入功能代码
    php 代码:
    //页面加载时间自动检测
    function wp_page_speed() {
    date_default_timezone_set( get_option( 'timezone_string' ) );
    $content .= timer_stop( $display = 0, $precision = 2 );
    $content .= ' s';
    echo $content;
    }
     
    //查询次数,占用内存 
    function performance( $visible = false ) {
    $stat = sprintf( '秒,查询数据库 %d 次,占用 %.2fMB 内存',
    get_num_queries(),
    timer_stop( 0, 3 ),
    memory_get_peak_usage() / 1024 / 1024
    );
    echo $visible ? $stat : "<!-- {$stat} -->" ;
    }
    • 再在主题footer.php合适位置加入以下代码
    php 代码:
    //加载耗时
    <?php timer_stop(1); ?>
    <?php if(function_exists('performance')) performance(true) ;?>

    [scode type="blue" size="small"]performance的参数 ture 表示在页面前端显示。如果你想在页面中不显示,只在html源码中可见可改为 false[/scode]

    文章评论/登录可见功能

    文章评论可见

    • 将以下代码加入到主题functions.php中
    php 代码:
    //文章评论后显示隐藏内容代码
    function reply_to_read($atts, $content=null) { 
    extract(shortcode_atts(array("notice" => '<p class="reply-to-read"><font color="#ff0000">温馨提示: </font>此处为隐藏内容,需要<a href="#respond" title="评论本文">评论本文</a>后刷新页面才能查看.</p>'), $atts)); 
    $email = null; 
    $user_ID = (int) wp_get_current_user()->ID; 
    if ($user_ID > 0) { 
    $email = get_userdata($user_ID)->user_email; 
    //对博主直接显示内容 
    $admin_email = "xxx@qq.com"; //博主Email 
    if ($email == $admin_email) { 
    return $content; 
    } 
    } else if (isset($_COOKIE['comment_author_email_' . COOKIEHASH])) { 
    $email = str_replace('%40', '@', $_COOKIE['comment_author_email_' . COOKIEHASH]); 
    } else { 
    return $notice; 
    } 
    if (empty($email)) { 
    return $notice; 
    } 
    global $wpdb; 
    $post_id = get_the_ID(); 
    $query = "SELECT `comment_ID` FROM {$wpdb->comments} WHERE `comment_post_ID`={$post_id} and `comment_approved`=’1′ and `comment_author_email`='{$email}' LIMIT 1"; 
    if ($wpdb->get_results($query)) { 
    return do_shortcode($content); 
    } else { 
    return $notice; 
    } 
    } 
     
    add_shortcode('reply', 'reply_to_read');
    • 在文章中添加[-reply]需要隐藏的内容[/reply],把[reply-]的“-”去掉
    • 将代码中的邮箱修改为自己的
    • 可自定义评论提示,代码如下,将“-”去掉
    php 代码:
    [-reply notice=“自定义的隐藏提示信息”]内容[/reply]

    文章登录可见

    • 同样也是将代码加入主题functions.php中
    php 代码:
    //部分内容登录可见 
    function login_to_read($atts, $content=null) { extract(shortcode_atts(array("notice" => '
    <span style="color: red;">温馨提示:</span>此处内容需要<a title="登录后可见" href="#respond">登录</a>后刷新页面才能查看!
    '), $atts));
    if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
    return $content;
    return $notice;
    } add_shortcode('hide', 'login_to_read');
    • 在文章中添加[-hide]需要隐藏的内容[/hide],把[-hide]的“-”去掉
    • 可自定义提醒内容
    php 代码:
    [-hide notice=“自定义的登录提示信息”]内容[/hide]

    后台速度优化

    由于wp登录后台会自动检测更新,导致访问速度很慢

    • 以下是禁止更新代码,加入到主题functions.php中
    php 代码:
    add_filter( 'auto_core_update_send_email', '__return_false' );//禁止发送“更新提示”邮件
    add_filter( 'auto_update_plugin', '__return_false' );//关闭“插件”的自动更新
    add_filter( 'auto_update_theme', '__return_false' );//关闭“主题”的自动更新
    add_filter( 'auto_update_translation', '__return_false' );//关闭“语言包”的自动更新
    add_filter('automatic_updater_disabled', '__return_true');// 彻底关闭自动更新
    add_filter( 'allow_dev_auto_core_updates', '__return_false' );//关闭“开发版内核”更新
    add_filter( 'allow_minor_auto_core_updates', '__return_false' );//关闭“主要内核”更新
    add_filter( 'allow_major_auto_core_updates', '__return_false' );// 关闭“次要内核”更新

    修复 gravatar 头像

    由于gravatar被墙,导致页面加载时间很长或者无法显示

    • 可换用cravatar,在主题functions.php中加入以下代码
    php 代码:
    /*修复wordpress上Cravatar头像无法显示问题*/
    if ( ! function_exists( 'get_cravatar_url' ) ) {
    /**
    *替换Gravatar头像为Cravatar头像
    *
    * @param string $url
    *
    * @return string
    */
    function get_cravatar_url( $url ) {
    $sources = array(
    'www.gravatar.com',
    '0.gravatar.com',
    '1.gravatar.com',
    '2.gravatar.com',
    'secure.gravatar.com',
    'cn.gravatar.com'
    );
    return str_replace( $sources, 'cravatar.cn', $url );
    }
    add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 );
    add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 );
    add_filter( 'get_avatar_url', 'get_cravatar_url', 1 );
    }

    设置上传文件类型

    配置 functions.php

    在主题functions.php中加入以下代码

    php 代码:
    // 自定义附件类型
    function custom_upload_mimes($existing_mimes = array()) {
    // 添加支持上传的文件类型
    $existing_mimes['zip'] = 'application/zip';
    $existing_mimes['rar'] = 'application/x-rar';
    $existing_mimes['exe'] = 'application/octet-stream';
    return $existing_mimes; 
    }
    add_filter('upload_mimes', 'custom_upload_mimes');

    保存并刷新页面即可上传对应配置类型的附件,其它类型的文件可自行搜索 MIME-TYPE 查找

    配置 wp-config.php

    打开WordPress 根目录,编辑 wp-config.php,在最后加入配置

    php 代码:
    /** 允许上传任意类型附件 */
    define('ALLOW_UNFILTERED_UPLOADS', true);

    保持并清理 WordPress 缓存,刷新多媒体页面即可上传任意类型的附件

    禁用Rss feed

    在主题 functions.php 中加入以下代码,此代码会彻底禁用feed功能,包括 feed 地址

    然后登陆进入WordPress 后台,随便打开一个页面,然后再把以下代码删除:flush\_rewrite\_rules();

    php 代码:
    // 删除 wp_head 输入到模板中的feed地址链接
    add_action( 'wp_head', 'wpse33072_wp_head', 1 );
    function wpse33072_wp_head() {
        remove_action( 'wp_head', 'feed_links', 2 );
        remove_action( 'wp_head', 'feed_links_extra', 3 );
    }
     
    foreach( array( 'rdf', 'rss', 'rss2', 'atom' ) as $feed ) {
        add_action( 'do_feed_' . $feed, 'wpse33072_remove_feeds', 1 );
    }
    unset( $feed );
     
    // 当执行 do_feed action 时重定向到首页
    function wpse33072_remove_feeds() {
        wp_redirect( home_url(), 302 );
        exit();
    }
     
    // 删除feed的重定向规则
    add_action( 'init', 'wpse33072_kill_feed_endpoint', 99 );
     
    function wpse33072_kill_feed_endpoint() {
        global $wp_rewrite;
        $wp_rewrite->feeds = array();
      
        // 运行一次后,记得删除下面的代码
        flush_rewrite_rules();
    }

    解决设置https导致重定向次数过多无法访问

    如果你采用 cloudflare 加速,建议使用端到端加密,配置好ssl证书既不会出现以下问题

    网站设置https后显示重定向次数过多无法访问,或者后台无法正常登录,可尝试以下方法

    打开根目录下文件 wp-config.php ,并加入下代码(注意必须添加到 if ( !defined(‘ABSPATH’) )之前)

    php 代码:
    $_SERVER['HTTPS'] = 'on';
    define('FORCE_SSL_LOGIN', true);
    define('FORCE_SSL_ADMIN', true);

    同时注意修改站点链接为https

    获取评论真实ip

    如果你的WP 使用了CDN导致评论无法获取用户真实ip,可尝试在wp-config.php文件中加入以下代码

    php 代码:
    if( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
        $get_HTTP_X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $_SERVER['REMOTE_ADDR'] = trim($get_HTTP_X_FORWARDED_FOR[0]);
    }

    关闭图片剪裁

    如果我们通过 WordPress 后台-设置-媒体中设置图片大小都为 0,那么 WordPress 5.3 版本及以上就会只裁切 1536、2048、scaled 这三个默认尺寸,但 768、1536、2048 这三个尺寸正常情况几乎不会被用到

    以下为禁用自动剪裁代码。加入主题 functions.php 即可

    php 代码:
    add_filter('intermediate_image_sizes_advanced', '__return_false' ); //移除图片裁切 
    add_filter('big_image_size_threshold', '__return_false' ); //移除 scaled 裁切

    以下代码是只禁止剪裁某一大小尺寸图片

    php 代码:
    add_filter('big_image_size_threshold', '__return_false');  // 禁用缩放尺寸2560 
    //以下是禁用其他尺寸 
    function shapeSpace_disable_medium_large_images($sizes) 
    { 
      unset($sizes['medium_large']); // disable 768px size images 
      unset($sizes['1536x1536']);    // disable 2x medium-large size 
      unset($sizes['2048x2048']);    // disable 2x large size return $sizes; 
     return $sizes; 
    }  
    add_filter('intermediate_image_sizes_advanced', 'shapeSpace_disable_medium_large_images');

    如果需要设置壁纸缩略图,和壁纸预览图,那么就可以在后台自己自定义裁剪大小,不需要可以设置 0

    同时使用以下代码

    php 代码:
    if(has_post_thumbnail()) 
    { 
      the_post_thumbnail('thumbnail' ,array('alt'=> trim(strip_tags( $post->post_title )), 'title'=> trim(strip_tags( $post->post_title )))); 
    }

    或者以下代码

    php 代码:
    <?php 
          if ( has_post_thumbnail() ) 
      {     // check if the post has a Post Thumbnail assigned to it. 
          $url = get_the_post_thumbnail_url($post->ID,'large'); 
          echo '<img class="single-thumbnail" alt="'.get_the_title().'" title="'.get_the_title().'" src="'.$url.'">'; 
      } 
    ?>
    声明:本文由 Akria(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。
    现在已有

    3

    条评论
    我要发表评论
    1. 头像 子弹
      · · 山东-潍坊
      • 等级:Lv.1
      • 角色:访客
      • 在线:很久之前
      头像
      子弹
      板凳

      啥玩意OωO

      评论
    2. · · 安徽-淮北
      • 等级:Lv.2
      • 角色:访客
      • 在线:很久之前
      头像
      沙发

      你的博客是typecho,还会有WordPress优化,是之前从WordPress过来的吗?

      评论
      1. · · 海外
        • 角色:博主
        • 在线:本周
        头像

        嗯,之前用过WP

        评论
    博客logo 静若安然 记录个人学习生活和成长历程 51统计 百度统计
    ICP 蜀ICP备2023037012号-1

    💻️ Akria 一小时前 在线

    🕛

    本站已运行 7 年 41 天 23 小时 22 分
    静若安然. © 2017 ~ 2024.
    网站logo

    静若安然 记录个人学习生活和成长历程
     
     
     
     
     
     
     
     

    3

    1

  • 下一篇