WP资源网插件教程:如何在自定义模板中添加新的变量?

自定义新增全局变量(两种方案,简单 + 进阶)

前置说明

当前插件内置变量是写死在 xd_news_render_html() 渲染函数里的,后台不能可视化新增变量,必须改 PHP 代码。 分两种需求:

  1. 简单变量:固定文字 / 固定自定义文字(推荐,不用改数据库)
  2. 高级变量:后台新增输入框填写内容、前台模板读取(可后台修改值)

一、方案 1:快速新增静态变量(固定值,最简单)

比如新增两个变量: {{site_tip}} = 网站提示文字 {{copyright}} = 底部版权

步骤 1:找到渲染函数末尾变量替换代码

文件里 xd_news_render_html() 函数,找到这段:

$replace_map = [
    '{{today_count}}' => $today_count,
    '{{banner_html}}' => $banner_html,
    '{{privilege_html}}' => $privilege_html,
    '{{link_bar}}' => $link_bar,
    '{{item_list}}' => $item_list,
    '{{pagination}}' => $pagination
];

步骤 2:直接追加你的自定义变量

$replace_map = [
    '{{today_count}}' => $today_count,
    '{{banner_html}}' => $banner_html,
    '{{privilege_html}}' => $privilege_html,
    '{{link_bar}}' => $link_bar,
    '{{item_list}}' => $item_list,
    '{{pagination}}' => $pagination,
    // 下面两行是你新增的自定义变量
    '{{site_tip}}' => '本站资源仅供学习,禁止商用',
    '{{copyright}}' => '©2026 小刀资源站 版权所有'
];

步骤 3:自定义模板 HTML 直接使用

<div class="simple-list-tpl">
    <h3>最新资源 <span class="count">{{today_count}}</span></h3>
    <div class="tip-text">{{site_tip}}</div>
    <div class="list-box">
        {{item_list}}
    </div>
    <div class="page-box">
        {{pagination}}
    </div>
    <div class="foot-link">
        {{link_bar}}
    </div>
    <div class="copyright">{{copyright}}</div>
</div>

优点:不用改后台、不用加数据库、一步到位;
缺点:文字写死在代码,想修改必须改 PHP。

二、方案 2:可后台填写的动态变量(推荐长期使用)

实现效果:

  1. 基础设置页面多出 2 个输入框,后台随便改文字
  2. 自定义模板用 {{site_tip}} {{copyright}} 自动读取后台填写内容

完整修改步骤(四段代码修改)

① 第一步:默认配置新增字段

找到 $default_base_options

$default_base_options = [
    'active_template' => 'template1',
    'media_type'     => 'image',
    'banner_img'     => 'https://g.gtimg.cn/music/photo_new/T057XD001003CoPL62IyR9q.png',
    'banner_video'   => '',
    'banner_url'     => '',
    'show_privilege' => '1',
    'posts_per_page' => 2,
    'cat_ids'        => '',
    'exclude_pids'   => '',
    'only_sticky'    => '0',
    'stat_hours'     => 24,
    'data_source'    => 'post',
    'forum_ids'      => '',
    'forum_status'   => 'publish',
    'forum_exclude'  => '',
    // 新增两行自定义变量存储
    'site_tip_text'  => '本站资源仅供学习,禁止商用',
    'copyright_text' => '©2026 小刀资源站 版权所有'
];

② 第二步:数据过滤函数允许保存字段

找到 xd_news_sanitize_base 函数,在输出数组追加:

$out['site_tip_text'] = sanitize_text_field($input['site_tip_text']);
$out['copyright_text'] = sanitize_text_field($input['copyright_text']);

③ 第三步:后台「基础设置」页面增加输入框

找到 #tab-base 基础设置表单,随便找一处插入:

<tr>
    <th colspan="2"><h3>自定义变量内容(模板可用)</h3></th>
</tr>
<tr>
    <th>站点提示文字 {{site_tip}}</th>
    <td>
        <input type="text" name="xd_news_base_options[site_tip_text]" value="<?php echo esc_attr($base_opts['site_tip_text']); ?>" class="regular-text">
    </td>
</tr>
<tr>
    <th>底部版权文字 {{copyright}}</th>
    <td>
        <input type="text" name="xd_news_base_options[copyright_text]" value="<?php echo esc_attr($base_opts['copyright_text']); ?>" class="regular-text">
    </td>
</tr>

④ 第四步:渲染函数绑定变量替换

xd_news_render_html 内,先读取后台配置: 在函数最上方加入:

$site_tip = $base_opts['site_tip_text'];
$copyright = $base_opts['copyright_text'];

再修改 `$replace_map`:

$replace_map = [
    '{{today_count}}' => $today_count,
    '{{banner_html}}' => $banner_html,
    '{{privilege_html}}' => $privilege_html,
    '{{link_bar}}' => $link_bar,
    '{{item_list}}' => $item_list,
    '{{pagination}}' => $pagination,
    '{{site_tip}}' => $site_tip,
    '{{copyright}}' => $copyright
];

使用方式

  1. 后台设置页面会出现两个输入框,随时修改文字保存
  2. 自定义模板 HTML 直接插入变量:
<div class="simple-list-tpl">
    <div class="tip">{{site_tip}}</div>
    <h3>最新资源 {{today_count}}</h3>
    {{item_list}}
    {{pagination}}
    <div class="copyright">{{copyright}}</div>
</div>

三、拓展:新增图片变量(示例)

如果你想后台上传图片,模板用 {{banner_two}}

  1. 默认配置加 banner_two_img =>
  2. 后台新增图片上传框(复制原有轮播图上传代码改 name)
  3. 渲染函数读取图片地址,加入 $replace_map
  4. 模板中写 <img src=”{{banner_two}}”>

四、批量新增多个变量通用规则

  1. 默认数组 $default_base_options 增加存储键名
  2. 过滤函数 xd_news_sanitize_base 接收并清洗
  3. 后台表单增加输入框,name 对应 xd_news_base_options[xxx]
  4. 渲染函数读取 $base_opts[‘xxx’]
  5. $replace_map 添加 {{变量名}} => $变量
  6. 自定义 HTML 模板直接写 {{变量名}} 即可自动渲染
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容