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">