标签: 主题修改

  • 新文章使用上次文章所选的标签

    代码介绍

    平时大量发布文章时,总有一个非常麻烦的问题,就是标签的重复选择。通常在大批量手动发布文章的时候,都是同分类,同标签的状态进行发布的。

    之前分享了写新文章时,自动勾选上次已选择的分类,文章如下:

    [b2_insert_post id=”95″]

    那么本次就分享自动添加上次文章添加的标签

    [content_hide]

    /**
     * 1. 记忆功能:当文章保存或发布时,记录当前使用的标签
     */
    function smart_tags_save_last_used($post_id) {
        // 如果是自动保存、修订版本或没有权限,则跳过
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
        if (wp_is_post_revision($post_id)) return;
        
        // 获取当前文章的标签(只获取名称)
        $tags = wp_get_post_tags($post_id, array('fields' => 'names'));
        
        // 如果有标签,则保存到当前用户的个人元数据中
        // 使用逗号连接,方便后续 JS 直接使用
        if (!empty($tags)) {
            update_user_meta(get_current_user_id(), 'last_used_post_tags', implode(',', $tags));
        }
    }
    add_action('save_post', 'smart_tags_save_last_used');
    
    /**
     * 2. 自动添加功能:在后台编辑器加载时,通过 JS 自动填充
     */
    function smart_tags_auto_fill_script() {
        // 仅在文章编辑页面或新建文章页面加载
        $screen = get_current_screen();
        if (!$screen || 'post' !== $screen->base || 'post' !== $screen->post_type) {
            return;
        }
    
        // 获取当前用户最后一次使用的标签
        $last_tags = get_user_meta(get_current_user_id(), 'last_used_post_tags', true);
        
        // 如果没有历史标签,直接返回
        if (empty($last_tags)) return;
        
        ?>
        <script type="text/javascript">
        jQuery(document).ready(function($) {
            // 定义检查和执行函数
            function tryAddSmartTags() {
                // 目标容器:标签列表
                var $checklist = $('#post_tag .tagchecklist');
                // 目标输入框
                var $input = $('#new-tag-post_tag');
                // 目标按钮
                var $btn = $('#post_tag .tagadd');
    
                // 确保这些元素都存在
                if ($checklist.length && $input.length && $btn.length) {
                    
                    // 逻辑判断:检查标签列表是否为空
                    // 只有当列表里没有标签时(即 children 数量为 0),才自动添加
                    if ($checklist.children().length === 0) {
                        
                        // 将保存的标签填入输入框
                        $input.val('<?php echo esc_js($last_tags); ?>');
                        
                        // 模拟点击“添加”按钮
                        $btn.click();
                        
                        console.log('历史标签已自动添加');
                    } else {
                        console.log('当前文章已有标签,跳过自动添加');
                    }
                }
            }
    
            // 稍微延迟执行,确保 WP 的原有 JS 已加载完毕
            setTimeout(tryAddSmartTags, 500);
        });
        </script>
        <?php
    }
    add_action('admin_footer', 'smart_tags_auto_fill_script');

    [/content_hide]

     

  • 文章内页点赞特效

    文章内页点赞特效

    简单介绍

    一个点赞后的动态效果,只有点赞后的动态效果,没有做取消点赞的效果,感觉没有必要,很少有人会取消点赞吧。

    点击后有一段小音效,可以自行替换

    使用方法看教程


    [content_hide]

    📦 资源下载
    🔐 提取码:
    UcGzn



    立即下载

    [/content_hide]

  • 首页四格按钮

    首页四格按钮

    具体效果自行在首页查看

    5个按钮,各自链接不同的地址,实现一个比较好看的样式,可以自行替换为自己喜欢的背景图片和功能,主要分享的是样式,具体看视频介绍

    视频介绍

    [content_hide]

    📦 资源下载
    🔐 提取码:
    a0aDD



    立即下载

    [/content_hide]

  • 首页大图搜索模块

    首页大图搜索模块

    简单介绍

    这是一个首页大图视频模块,主要是很多人在弄,我也跟风弄了一个

    功能详情:

    • 搜索功能:搜索后跳转到搜索结果页面
    • 热门标签:获取浏览量最多的5个标签 – 多彩颜色
    • 视频缓存:可播放多个视频,单用户7天内只能看到一个视频,7天后切换到下一个
    • 具体看下方视频介绍

     

    使用大图搜索模块


     

    后续顶部优化


     
    [content_hide]

    📦 资源下载
    🔐 提取码:
    2nkaN



    立即下载

    [/content_hide]

  • B2底部footer美化

    B2底部footer美化

    简单介绍

    这是一个我自己整出来的底部,主要当初觉得动态效果比较好看,然后改出来的,如果你喜欢可以用一下,代码不是那么完美,可能有些小地方不太兼容,改一下样式即可。

    具体使用方法请查看视频教程

    会的人可以直接下载文件将代码放到对应的文件中


    [content_hide]

    📦 资源下载
    🔐 提取码:
    N1kJy



    立即下载

    [/content_hide]

  • 修改B2主题多层级标签筛选

    修改B2主题多层级标签筛选

    简介

    B2原标签筛选是一个多级筛选项,可匹配一篇含有多个标签的文章,这个功能主要用于影视站或其他需要多个标签筛选一篇文章的内容站。

    例如:一篇文章是美国电影,种类是科幻,年份是2025,那么给这篇文章设置了:美国,科幻,2025三个标签后,用户通过标签去选择这三个标签项,就会筛选出来这个文章。

    但是,我用不到啊!!

    我只想显示单一标签下的所有文章,我不可能一篇文章又是功能添加的,又是图标图片的,一篇文章牵扯多个标签。

    所以怎么办?

    改!!!

    怎么改?!!!

    看教程!!!!

    子主题functions.php 中添加代码以便关联文件进行修改

    require_once get_stylesheet_directory() . '/Modules/Templates/Archive.php';

    通过以上路径,找到254行,也可搜索关键词:标签筛选

    修改B2主题多层级标签筛选

     

    找到上方图片中的内容后,从public方法名开始,整段替换

    替换完成后,清理浏览器缓存

    如果你跟我一样是多行标签,只希望用户点哪个标签就看哪个标签下的内容,不允许多个标签同时被选择,类似于菜单一样

    那么你替换代码后,已经完成了修改,可以试一下。

    [content_hide]

    public static function filter_tag($tags, $term, $request, $_url) {
        if (empty($tags)) return;
     
        $is_tax = $term->taxonomy === 'post_tag';
     
        // 分行
        $tags = explode(PHP_EOL, $tags);
        $tags = array_filter($tags);
     
        $html = '';
        $i = 0;
        foreach ($tags as $k_l => $v_l) {
            $list = explode('|', $v_l);
            if ($list) {
                $i++;
                $name = $list[0];
                $list = explode(',', $list[1]);
                $list = array_filter($list);
     
                if (!empty($list)) {
     
                    $a = '';
                    foreach ($list as $k => $v) {
                        $_term = get_term_by('name', $v, 'post_tag');
     
                        if (isset($_term->term_id)) {
                            // 清除之前的标签筛选,重新构建URL
                            if ($is_tax) {
                                $url = get_term_link($_term->term_id) . $request;
                            } else {
                                // 构建新的URL,清除之前的筛选条件
                                $url = add_query_arg('tags', $_term->slug, $_url . $request);
                            }
     
                            // 标记当前标签为选中
                            $a .= '<a href="' . $url . '" class="' . ($term->slug === $_term->slug || (isset($_GET['tags']) && $_GET['tags'] == urldecode($_term->slug)) ? 'current' : '') . '" title="' . $v . '">' . $v . '</a>';
                        }
                    }
     
                    if ($a) {
                        if (!$is_tax) {
                            // 对于非分类页面,添加"全部"选项
                            $a = '<a href="' . (remove_query_arg('tags', $_url . $request)) . '" class="' . (!isset($_GET['tags']) ? 'current' : '') . '">' . __('全部', 'b2') . '</a>' . $a;
                        }
                        $html .= '<li><div class="filter-name">' . $name . ':</div><div class="filter-items">' . $a . '</div></li>';
                    }
                }
            }
        }
     
        if ($html) {
            return $html;
        }
     
        return;
    }

     

    [/content_hide]

  • 修改朋友圈帖子显示字数

    修改朋友圈帖子显示字数

    简介

    常用B2主题圈子功能的都知道,一旦圈子字数过多就会直接隐藏,并生成一个阅读更多的按钮,让你点击跳转到内页查看。

    这对我来说是非常鸡肋的,本来一眼能看完的内容,非要再打开跳转一次,很难受

    所以我就对这个字数的显示做了修改。

    如何修改?

    首先我们来看控制字数以及截断字数的原代码,同时看这段代码的含义

    [content_hide]

    代码位置:b2/Assets/fontend/circle.js   1630行左右

    // 检查 newContent 是否为假(即不存在或为 false)
    if (!newContent) {
        // 如果 this.data[ti].full_content 为假,且 this.single.is 也为假,则进入这个逻辑块
        if (!this.data[ti].full_content && !this.single.is) {
            // 将 content 的长度转换为整数并赋值给 length
            let length = parseInt(content.length);
            
            // 如果内容长度大于 200,则进入这个逻辑块
            if (length > 200) {
                // 如果长度的三分之一大于 200,则设置长度为 100
                if (length / 3 > 200) {
                    length = 100;
                } else {
                    // 否则,设置长度为原长度的三分之一
                    length = length / 3;
                }
                
                // 截取内容的前 length 个字符,并在其后添加省略号和“阅读更多”按钮
                content = content.substring(0, length) + '...&nbsp;&nbsp;<button class="text" onclick="b2CircleList.showFullContent(' + ti + ')">' + b2_global.js_text.global.read_more + '<i class="b2font b2-jt-down"></i></button>';
                
                // 返回一个包含链接和截断内容的 HTML 片段
                return '<a href="' + item.link + '" target="_blank" class="link-block"></a><p>' + content + '</p>';
            }
        }
    }

    那么如何修改长度,让它显示的字符更多呢?

     

    if (length > 2000) { //哔哔一二注释:如果长度大于2000,才可以执行以下逻辑。
        if (length / 2 > 200) { // 使用一半的长度作为截断点
            length = 200;
        } else {
            length = length / 2; // 截取原长度的一半
        }

    将原来的判断条件200字符,改为2000字符。如果你想展示更多,那就将字符长度调整的更高。

    [/content_hide]

    注意:此文件不可以在子主题中引用,只能再父主题中修改,修改路径在上方,自己看。为什么不能?我懒得研究

    你可以研究一下并告诉我。

    为什么你修改后没生效?有没有可能是你改完以后没清空浏览器缓存?毕竟你改的是js文件,需要让它重新加载,用修改后的方法判断。