使用Agron主题建站

Agron 主题建站记录

background

Agron 主题网上资源丰富,教程较多,同时页面简洁,自定义选项多,非常适合我这类第一次建站的小白用户。下面记录下本人第一次建站的过程。

安装主题

Github 链接:argon-theme

下载 zip 文件,在 wordpress 主题中导入后启用主题。

image-20241117111021266

主题设置

TODO

美化主题

背景主题色半透明

半透明化卡片等事物。

  1. 自定义 -> 额外css中添加
    #leftbar_announcement {
    background: var(--themecolor-gradient) !important;
    }
    #footer{
    background: var(--themecolor-gradient) !important
    }
    
  2. Agron主题选项->脚本-> 页尾脚本添加
    <script>
    
    function hexToRgb(hex,op){
    let str = hex.slice(1);
    let arr;
    if (str.length === 3) arr = str.split('').map(d => parseInt(d.repeat(2), 16));
    else arr = [parseInt(str.slice(0, 2), 16), parseInt(str.slice(2, 4), 16), parseInt(str.slice(4, 6), 16)];
    return `rgb({arr.join(', ')},{op})`;
    };
    
    let themeColorHex = getComputedStyle(document.documentElement).getPropertyValue('--themecolor').trim();
    let op1 = 0.6
    let themeColorRgb = hexToRgb(themeColorHex,op1);
    let themecolorGradient = getComputedStyle(document.documentElement).getPropertyValue('--themecolor-gradient')
    
    document.documentElement.style.setProperty('--themecolor-gradient',themeColorRgb)
    let op2 = 0.8
    let colorTint92 = getComputedStyle(document.documentElement).getPropertyValue('--color-tint-92').trim();
    colorTint92 += ', '+op2;
    document.documentElement.style.setProperty('--color-tint-92',colorTint92)
    
    let op3 = 0.65
    let colorShade90 = getComputedStyle(document.documentElement).getPropertyValue('--color-shade-90').trim();
    colorShade90 += ', ' + op3;
    document.documentElement.style.setProperty('--color-shade-90',colorShade90)
    
    let op4 = 0.8
    let colorShade86 = getComputedStyle(document.documentElement).getPropertyValue('--color-shade-86').trim();
    colorShade86 += ', ' + op4;
    document.documentElement.style.setProperty('--color-shade-86',colorShade86)
    
    </script>
    

    参数说明:

    • op1——“白天”状态主题色透明度
    • op2——“白天”状态卡片颜色透明度
    • op3——“夜间”状态卡片颜色透明度
    • op4——“夜间”状态主题色透明度

字体

字体样式选择

  1. 下载字体样式,可以一些字体资源网站下载:

    免费简体字体下载 – 免费商用简体字体大全 – 100font.com

    中文字体免费下载和在线预览-字体天下

  2. 前往 TTF to WOFF2 将字体文件转换问 woff2 格式

  3. 将字体文件放在网站根目录下。这里我在网站根目录下创建 font 文件夹。专门用于放字体文件

  4. 自定义->额外css中添加代码:

    /*设置网站字体*/
    /*https://your_domain.com/font/jyhphy-2.woff2 修改为自己的字体路径*/
    @font-face{ 
    font-family:btfFont; 
    src: url(https://your_domain.com/font/jyhphy-2.woff2) format('woff2') 
    } 
    
    body{ 
    font-family:"btfFont" !important 
    }
    

标题字体

网站字体彩色

自定义->额外css中添加:

0%{
background-position: 0%;
}
100%{
background-position: 200%;
}
}
.banner-title{
position: absolute;
background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4);
background-size:200%;
animation: ColdLight 3s linear infinite;
color:transparent !important;
-webkit-background-clip: text;
font-weight: bold; //添加字体加粗属性
font-size: 50px; //标题字体大小
}

.banner-title::before {
content: '';
position: absolute;
top: 0;
left: 50%;
bottom: 0;
right: 0;
transform:translatex(-50%);
max-width:500px;
z-index: -100;
background:white;
filter: blur(30px);
opacity: 0.5;
}
.banner-title .banner-title-inner{
position:relative;
background:inherit;
}
.banner-title .banner-subtitle{
position:relative;
background:inherit;
}
副标题彩虹效果

自定义->额外 CSS 中加入以下代码:

/* 副标题彩虹效果 */
.banner-subtitle{
font-size: 20px;
-webkit-text-fill-color: transparent;
background: linear-gradient(94.75deg,rgb(60, 172, 247) 0%,rgb(131, 101, 253) 43.66%, rgb(255, 141, 112) 64.23%,rgb(247, 201, 102) 83.76%,rgb(172, 143, 100) 100%);
-webkit-background-clip: text;
}

顶部导航栏

左上角图片大小

自定义->额外css中添加:

.navbar-brand img {
height: 60px;
}

左上角图片与右侧图片文字的间距

自定义->额外css中添加:

.mr-lg-5, .mx-lg-5 {
margin-right: 1rem !important;
}

菜单项大小以及间距调整(可选)

自定义->额外css中添加:

/*字体大小 间距需自行调整*/
.navbar-expand-lg .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}

/*菜单大小*/
.nav-link-inner--text {
    font-size: 1.25em;
}
.navbar-nav .nav-item {
    margin-right:0;
}
.mr-lg-5, .mx-lg-5 {
    margin-right:1rem !important;
}
.navbar-toggler-icon {
    width: 1.8rem;
    height: 1.8rem;
}
/*顶栏标题大小*/
.navbar-brand {
    font-size: 1.2rem;
    margin-right: 1.0 rem;
    padding-bottom: 0.2 rem;
}

顶部菜单项不多时可以不修改此项。

banner下方小箭头滚动效果

  1. 打开 外观 -> 主题文件编辑器

  2. 在右侧 主题文件 处找到 主题页眉( header.php 文件)

  3. 在第 439 行找到

    <div class="cover-scroll-down">
    

    将整个div代码块(也就是原本的标签)中的内容替换为如下:

    <i class="fa fa-angle-down" aria-hidden="true" id="pointer1"></i>
    <i class="fa fa-angle-down" aria-hidden="true" id="pointer2"></i>
    <i class="fa fa-angle-down" aria-hidden="true" id="pointer3"></i>
    

    修改如图:

    673be87ff35e6

  4. 接着,在 自定义->额外css 添加如下代码:

    @keyframes up-down-move {
    0% {
    opacity:0;
    transform:translate(-50%,-150px); 
    }
    50% {
    opacity:1;
    transform:translate(-50%,-130px); 
    }
    100% {
    opacity:0;
    transform:translate(-50%,-110px); 
    }
    }
    
    .cover-scroll-down .fa-angle-down{
    font-size: 3rem;
    text-shadow: 0px 0px 8px #dc1111;
    position:absolute;
    transform: translate(-50%,-80px);
    opacity:0;
    }
    
    .cover-scroll-down #pointer1{
    animation: up-down-move 3s linear infinite;
    
    }
    
    .cover-scroll-down #pointer2{
    animation: up-down-move 3s 1s linear infinite;
    }
    
    .cover-scroll-down #pointer3{
    animation: up-down-move 3s 2s linear infinite;
    }
    

年度倒计时显示(左侧栏)

在左侧栏里添加工具 ->简码,添加代码:

<div class="progress-wrapper" style="padding: 0">
<div class="progress-info">
<div class="progress-label">
<span id="yearprogress_yearname"></span>
</div>
<div id="yearprogress_text_container" class="progress-percentage">
<span id="yearprogress_progresstext"></span>
<span id="yearprogress_progresstext_full"></span>
</div>
</div>
<div class="progress">
<div id="yearprogress_progressbar" class="progress-bar bg-primary"></div>
</div>
</div>
<script no-pjax="">
function yearprogress_refresh() {
let year = new Date().getFullYear();
("#yearprogress_yearname").text(year);
let from = new Date(year, 0, 1, 0, 0, 0);
let to = new Date(year, 11, 31, 23, 59, 59);
let now = new Date();
let progress = (((now - from) / (to - from + 1)) * 100).toFixed(7);
let progressshort = (((now - from) / (to - from + 1)) * 100).toFixed(2);("#yearprogress_progresstext").text(progressshort + "%");
("#yearprogress_progresstext_full").text(progress + "%");("#yearprogress_progressbar").css("width", progress + "%");
}
yearprogress_refresh();
if (typeof yearProgressIntervalHasSet == "undefined") {
var yearProgressIntervalHasSet = true;
setInterval(function () {
yearprogress_refresh();
}, 500);
}
</script>
<style>
#yearprogress_text_container {
width: 100%;
height: 22px;
overflow: hidden;
user-select: none;
}
#yearprogress_text_container > span {
transition: all 0.3s ease;
display: block;
}
#yearprogress_text_container:hover > span {
transform: translateY(-45px);
}
</style>

小工具栏设置

透明设置

在左侧栏里添加工具 ->简码,添加代码:

/*小工具栏背景完全透明*/
/*小工具栏是card的子元素,如果用同一个透明度会叠加变色,故改为完全透明*/
.card .widget,.darkmode .card .widget,#post_content > div > div > div.argon-timeline-card.card.bg-gradient-secondary.archive-timeline-title{
    background-color:#ffffff00 !important;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
}
.emotion-keyboard,#fabtn_blog_settings_popup{
    background-color:rgba(255, 255, 255, 0.95) !important;
}
缩小字体

在左侧栏里添加工具 ->简码,添加代码:

/*左侧栏小工具栏字体缩小*/
#leftbar_tab_tools{
    font-size: 14px;
}

网站底部信息

Argon主题选项->页脚->页脚内容添加代码:

<style>
/* 核心样式 */
.github-badge {
display: inline-block;
border-radius: 4px;
text-shadow: none;
font-size: 13.1px;
color: #fff;
line-height: 15px;
margin-bottom: 5px;
font-family: "Open Sans", sans-serif;
}
.github-badge .badge-subject {
display: inline-block;
background-color: #4d4d4d;
padding: 4px 4px 4px 6px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
font-family: "Open Sans", sans-serif;
}
.github-badge .badge-value {
display: inline-block;
padding: 4px 6px 4px 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
font-family: "Open Sans", sans-serif;
}
.github-badge-big {
display: inline-block;
border-radius: 6px;
text-shadow: none;
font-size: 14.1px;
color: #fff;
line-height: 18px;
margin-bottom: 7px;
}
.github-badge-big .badge-subject {
display: inline-block;
background-color: #4d4d4d;
padding: 4px 4px 4px 6px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.github-badge-big .badge-value {
display: inline-block;
padding: 4px 6px 4px 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.bg-orange {
background-color: #ec8a64 !important;
}
.bg-red {
background-color: #cb7574 !important;
}
.bg-apricots {
background-color: #f7c280 !important;
}
.bg-casein {
background-color: #dfe291 !important;
}
.bg-shallots {
background-color: #97c3c6 !important;
}
.bg-ogling {
background-color: #95c7e0 !important;
}
.bg-haze {
background-color: #9aaec7 !important;
}
.bg-mountain-terrier {
background-color: #99a5cd !important;
}
</style>

   <div class="github-badge-big">
        <span class="badge-subject"><i class="fa fa-id-card"></i> 备案号 </span>
        <span class="badge-value bg-orange"><a href="https://beian.miit.gov.cn/" target="_blank" one-link-mark="yes">ICP备案号</a> |
            <a href="https://beian.mps.gov.cn/" rel="noreferrer" target="_blank">
            <img src="备案图标url" style="width: 20px; height: 20px;"> 公网安备案号</a>
        </span>
    </div>

    <div class="github-badge-big">
        <span class="badge-subject">Copyright </i></span>
        <span class="badge-value bg-red"><i class="fa fa-copyright" aria-hidden="true"></i> 开始年-当前年
            <a href="https://YourWebSite" target="_blank" one-link-mark="yes"> YourName </a>
        </span>
       </div>

    <div class="github-badge-big">
        <span class="badge-subject">联系我 </i> </span>
        <span class="badge-value bg-red"> <i class="fa fa-envelope-o" aria-hidden="true"></i> 
            <a href="mailto:example@email.com" target="_blank" one-link-mark="yes"> 
 example@email.com </a>
        </span>
    </div>

    <!-- 运行时间 -->
    <div class="github-badge-big">
        <span class="badge-subject"><i class="fa fa-clock-o"></i> Running Time</span><span
            class="badge-value bg-apricots"><span id="blog_running_days" class="odometer odometer-auto-theme"></span>
            days
            <span id="blog_running_hours" class="odometer odometer-auto-theme"></span> H
            <span id="blog_running_mins" class="odometer odometer-auto-theme"></span> M
            <span id="blog_running_secs" class="odometer odometer-auto-theme"></span>S
        </span>

 <script no-pjax="">
var blog_running_days = document.getElementById("blog_running_days");
var blog_running_hours = document.getElementById("blog_running_hours");
var blog_running_mins = document.getElementById("blog_running_mins");
var blog_running_secs = document.getElementById("blog_running_secs");
function refresh_blog_running_time() {
var time = new Date() - new Date(2024, 10, 17, 0, 0, 0); /*此处日期的月份改为自己真正月份的前一个月*/
var d = parseInt(time / 24 / 60 / 60 / 1000);
var h = parseInt((time % (24 * 60 * 60 * 1000)) / 60 / 60 / 1000);
var m = parseInt((time % (60 * 60 * 1000)) / 60 / 1000);
var s = parseInt((time % (60 * 1000)) / 1000);
blog_running_days.innerHTML = d;
blog_running_hours.innerHTML = h;
blog_running_mins.innerHTML = m;
blog_running_secs.innerHTML = s;
}
refresh_blog_running_time();
if (typeof bottomTimeIntervalHasSet == "undefined") {
var bottomTimeIntervalHasSet = true;
setInterval(function () {
refresh_blog_running_time();
}, 500);
}
</script>

滚动模糊

Argon主题选项->脚本->页头脚本加入下面代码:

<!--滚动模糊--><script>
window.addEventListener("scroll", function (e) {
  if (window.scrollY > window.innerHeight * 0.3) {
    document.querySelector("#content").classList.add("scrolled");
  } else {
    document.querySelector("#content").classList.remove("scrolled");
  }
});</script>
<style>
#content.scrolled::before {
  filter: blur(13px);
  transform: scale(1.02);
}
#content::before {
  transition: filter .3s ease, transform .3s ease !important;
  filter: blur(0px);
  transform: scale(1.02);
}</style>

顶部Banner美化

白云效果

自定义->额外 CSS 中加入以下代码:

/* 白云效果 */
.banner-title::before {
content: '';
position: absolute;
top: 0;
left: 50%;
bottom: 0;
right: 0;
transform:translatex(-50%);
max-width:500px;
z-index: -100;
background:white;
filter: blur(30px);
opacity: 0.5;
}

正文内容

正文表格样式修改(居中与线条颜色)

自定义->额外 CSS 中加入以下代码:

/*正文表格样式修改*/
article table > tbody > tr > td,
article table > tbody > tr > th,
article table > tfoot > tr > td,
article table > tfoot > tr > th,
article table > thead > tr > td,
article table > thead > tr > th{
    padding: 8px 10px;
    border: 1px solid;
}
/*表格居中样式*/
.wp-block-table.aligncenter{margin:10px auto;}

引文属性设置

自定义->额外 CSS 中加入以下代码:

/*引文属性设置*/
blockquote {
    /*添加弱主题色为背景色*/
    background: rgba(var(--themecolor-rgbstr), 0.13) !important;
    width: 100%
}
/*引文颜色 建议用主题色*/
:root {
    /*也可以用类似于--color-border-on-foreground-deeper: #009688;这样的命令*/
    --color-border-on-foreground-deeper: rgba(var(--themecolor-rgbstr));
}

安全设置

网站部署成功后,安全问题也是每个站长不得不考虑的问题。下面提供几种方法,可以提高网站的安全性,降低网站被暴力破解的可能。

author 页面地址

author 页面地址为http://yoursite/?author=1,ID 会依据你注册的用户数量自增,请求此 URL 会301到另一个 URL,新的 URL 为 http://.../author/后台登录的用户名

会导致注册用户名名泄露,解决方案这里提供两个:

  1. 在主题代码里实现:
    /* 在主题代码的function.php中添加 */
    /* author 页面地址 */
    function my_author_link() {
    return home_url('/');
    }
    add_filter('author_link', 'my_author_link');
    

    访问带有 author 参数的URL, 就跳向主页

  2. 通过 .htaccess 文件添加重定向

    在 .htaccess文件中添加

    redirect 301 URL_1 URL_2 
    

    URL_1 为使用author参数系统返回的URL

    URL_2 为你的网站主页

xmlrpc.php

xmlrpc 为 WordPress 远程调用的接口,使用 xmlrpc 调用接口进行账号保存没有验证码,最大错误尝试次数限制等,一次 POST 请求可以尝试大量的账号与密码。为了解决这一风险,最好禁用该接口。下面提供2种解决方案:

  1. 在 Apache, Nginx 等 Web 服务器中限制 xmlrpc.php 访问
    location = /xmlrpc.php {
       deny all;
    }
    
  2. 修改 WordPress 配置文件 wp-config.php
    add_filter('xmlrpc_enabled', '__return_false');
    

WordPress 后台默认地址

后台默认地址 http://yoursite/wp-login.php。通过修改主题的 function.php 修改该默认地址。添加如下代码:

function login_protection() {
    if ($_GET['word'] != 'press')
        header('Location : /');
}
add_action('login_enqueue_scripts',`login_protection`);

后台登录地址变为http://yoursite/wp-login.php?word=presswordpress自行修改。

或者使用插件解决

WPS Hide Login插件可以隐藏登录入口

WPS Limit Login 限制后台登录试错次数。

restAPI

WordPress 的 resAPI可会暴露用户名.通过 GET 请求GET http://yoursite/wp-json/wp/v2/users。返回link字段中包含用户名。

解决方法:

  1. 修改主题的 function.php 文件。添加如下代码
    add_filter( 'rest_endpoints', function( endpoints ){
       if(!is_user_logged_in()) {
           if ( isset(endpoints['/wp/v2/users'] ) ) {
               unset( endpoints['/wp/v2/users'] );
           }
           if ( isset(endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
               unset( endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
           }
       }
       returnendpoints;
    });
    

    或者完全禁用

    /*禁用未登录的用户获取resAPI*/
    function rest_only_for_authorized_users($wp_rest_server) {
       if ( !is_user_logged_in() ) {
           wp_die('非法操作!');
       }
    }
    add_filter('rest_api_init', 'rest_only_for_authorized_users', 99);
    
  2. 通过 Web 服务器限制
    /* 完全禁止 */
    location ~* /wp/v2/(.*) {
       deny all;
    }
    
    /* 或者限制user */
    location ~* /wp-json/wp/v2/users(\/)?(.*)? {
       deny all;
    }
    

参考文章

本文的代码参考自下面这些文章:

  1. Argon主题美化 – 北冥红烧鱼的芥子空间
  2. Argon主题博客美化 – Echo小窝
  3. 博客Argon主题美化 – pidanxia’ s Blog
  4. 玩转代码|WordPress防止暴力破解管理员密码_wordpress绕过密码-CSDN博客
上一篇
下一篇