2024年7月17日

宝塔的memos设置了反向代理,配置文件记录下:

#PROXY-START/

location ^~ /
{
proxy_pass http://172.17.0.2:5230;
proxy_http_version 1.1;
proxy_read_timeout 360s;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;

add_header X-Cache $upstream_cache_status;
#Set Nginx Cache

set $static_filetsfNKsif 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filetsfNKsif 1;
expires 1m;
}
if ( $static_filetsfNKsif = 0 )
{
add_header Cache-Control no-cache;
}
}
#PROXY-END/

2024年7月13日

首页文章目录添加文章图片,如果有特色图片则按样式展示,如果没有则不展示:

<?php if (has_post_thumbnail()) : ?>

    <?php $image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full'); ?>

<p><img decoding="async" loading="lazy" class="alignnone size-medium" src="<?php echo $image[0]; ?>" style="width: 100%;border-radius: 3px;max-height: 100px;object-fit: cover;"></p>

<?php endif; ?>

2024年7月12日

首页添加了说说模块,原来博友是获取的指定页面第一行文字,我修改了下,获取指定文章类目里最新文章的时间和标题,代码如下:

<?php
// 获取指定分类目录(比如分类ID为5)中的最新一篇文章发布时间
$latest_post_in_category = get_posts(array(
'category' => 20, // 替换为你的分类ID
'numberposts' => 1, // 只获取一篇文章
'orderby' => 'post_date', // 按照发布日期排序
'order' => 'DESC' // 降序,最新的文章排在最前面
));

// 检查是否有文章
if (!empty($latest_post_in_category)) {
// 获取最新文章的发布时间
$latest_post_time = $latest_post_in_category[0]->post_date;
// 输出发布时间
echo $latest_post_time;
}
?>
<?php
// 假设我们要获取分类ID为5的最新文章标题
$category_id = 20;

// 查询参数
$args = array(
'cat' => $category_id, // 指定分类ID
'fields' => 'ids', // 只获取文章ID
'orderby' => 'date', // 按日期排序
'order' => 'DESC', // 降序
'numberposts' => 1 // 只获取最新的一篇文章
);

// 执行查询
$latest_post_id = get_posts($args);

// 检查是否有文章
if ($latest_post_id) {
// 获取最新文章的标题
$latest_post = get_post($latest_post_id[0]);
$latest_title = $latest_post->post_title;

// 输出最新文章标题
echo $latest_title;
} else {
echo 'No posts found.';
}
?>

但设置好以后会发现首页展示的文章里出现了说说类目,这不是我们想看到的,所以需要以下代码屏蔽掉首页的展示

第一种办法:也是最先采用的办法,是在index.php中查找

if (have_posts())

或者

while (have_posts())

在下面添加:

<!-- If the post is in the category we want to exclude, we simply pass to the
next post. -->
<?php if (in_category('42') && is_home()) continue; ?>

该代码的原理是,文章loop中遇到分类id为42的文章后立即跳过;但同时也带来一个文章列表分页问题——这样设置完后,会导致首页文章展示错误,因为隐藏了类目x下的文章,假如x,也就是说说类目下有10篇文章,首页设置展示10篇最新文章,这种情况下,首页的文章就全部都不显示了,如果设置了显示12篇,说说有10条,那么首页也就只显示2条文章了,这里用下面的代码可以解决:

下面的两种办法都是采用了query_posts函数,经过本人测试,没有上述问题,大家可以放心使用。

第一种方法:在index.php中查找 if (have_posts()) 或 while (have_posts()) ,在前面添加query_posts函数如下:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
// 不想显示的分类ID,多个用半角逗号隔开
'category__not_in' => array(42),
'paged' => $paged
);
query_posts($args);

第二种方法:还是在index.php中查找 if (have_posts()) 或 while (have_posts()) ,将查找到的这一整行改成:

if ( have_posts() ) : query_posts($query_string .'&cat=-42'); while
( have_posts() ) : the_post();
//42即为不想显示的分类ID,多个用半角逗号隔开。

同时,上一页下一页按钮也需要屏蔽不想展示的「说说」类目的文章,所以接着把原来上一篇下一篇的代码换成如下。
后一篇:

<?php
// 假设你想要屏蔽的类别ID是 20
$excluded_category = 20;

// 获取后一篇文章
$previous_post = get_previous_post();

if (!empty($previous_post) && !has_category($excluded_category, $previous_post->ID)) {
// 如果前一篇文章存在且不在屏蔽的类别中,则显示链接
previous_post_link('%link', '%title');
} else {echo "没有了,已经是最后文章";}
?>

前一篇:

<?php
// 假设你想要屏蔽的类别ID是 20
$excluded_category = 20;

// 获取前一篇文章
$qianyipian_post = get_next_post();

if (!empty($qianyipian_post) && !has_category($excluded_category, $qianyipian_post->ID)) {
// 如果前一篇文章存在且不在屏蔽的类别中,则显示链接
next_post_link('%link', '%title');
} else {echo "没有了,已经是最新文章";}
?>

2024年7月30日
给网站添加了暗色模式,使用创建了浮窗按钮,点击时会用加载的JS代码判断和记录用户选择的默认模式,根据用户选择,来加载暗色模式.CSS或明亮模式.CSS 代码如下: 网站index.php添加按钮到合适的位置

 <li id="DarkModeButton" onclick = "switchNightMode()" class="">◐</li><script src="<?php bloginfo('template_url'); ?>/js/dark.min.js"></script>
加载的JS文件内容:
function switchNightMode() {
var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0';

if (night === '0') {
// 当前为白天模式,切换到夜间模式
document.querySelector('link[title="dark"]').disabled = false; // 启用夜间模式样式表
document.cookie = "night=1;path=/"; // 设置 Cookie,记录夜间模式开启
console.log('夜间模式已开启');
} else {
// 当前为夜间模式,切换到白天模式
document.querySelector('link[title="dark"]').disabled = true; // 禁用夜间模式样式表
document.cookie = "night=0;path=/"; // 设置 Cookie,记录夜间模式关闭
console.log('夜间模式已关闭');
}
}

(function() {
if (document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") === '') {
// 如果 Cookie 不存在,根据时间判断是否开启夜间模式
if (new Date().getHours() > 20 || new Date().getHours() < 6) {
document.querySelector('link[title="dark"]').disabled = false; // 启用夜间模式样式表
document.cookie = "night=1;path=/"; // 设置 Cookie,记录夜间模式开启
console.log('夜间模式已开启');
} else {
document.cookie = "night=0;path=/"; // 设置 Cookie,记录夜间模式关闭
console.log('夜间模式已关闭');
}
} else {
// 如果 Cookie 存在,根据 Cookie 值设置页面样式
var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0';
if (night === '1') {
document.querySelector('link[title="dark"]').disabled = false; // 启用夜间模式样式表
console.log('夜间模式已开启');
} else {
document.querySelector('link[title="dark"]').disabled = true; // 禁用夜间模式样式表
console.log('夜间模式已关闭');
}
}
})();

CSS文件就不放了,根据自己站去用google浏览器F12开发者模式修改,修改好了直接复制粘贴新建dark.css,记得合适的位置设置加载它,同时title名字设置为dark以便JS文件使用。

<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/css/dark.css" title="dark">