You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress中修改<li>元素的title属性文本?

问题描述
  • 我有一个带有title属性的<li>元素,鼠标悬停时会显示该属性内容,当前其title属性值为"Details"(代码格式为<li title="Details">),需要修改这个title属性的文本。
已尝试的方法
  • 在functions.php中添加了一个使用gettext的函数,该函数通常对其他元素有效,但用于此处时未能成功。
add_filter('gettext',function($strings) 
{
    $text = array(
        'Details' => 'Pregledaj',
        'Ship to'   => 'Dostavite na',
    );
    $strings = str_ireplace( array_keys( $text ), $text, $strings );
    return $strings;
}, 20 );
解决方案

原因分析

gettext过滤器仅对通过__()、_e()等WordPress翻译函数输出的文本生效。如果这个<li>的title是硬编码在模板里,或是通过非翻译函数的方式输出,gettext就无法捕获到这段文本。

方法1:直接修改模板文件

找到输出该<li>元素的模板文件(比如产品列表模板、自定义页面模板),直接将title="Details"替换为title="Pregledaj"。注意:如果是主题模板,建议使用子主题修改,避免主题更新时覆盖修改内容。

方法2:通过钩子过滤HTML内容替换

如果找不到模板位置,或者不想修改模板,可以用钩子过滤输出的HTML内容,精准替换目标属性:

add_filter('the_content', 'custom_replace_li_title');
function custom_replace_li_title($content) {
    // 精准匹配带有title="Details"的<li>元素
    $content = preg_replace('/<li([^>]*?)title="Details"([^>]*?)>/', '<li$1title="Pregledaj"$2>', $content);
    return $content;
}

如果这个<li>出现在特定场景(比如WooCommerce产品列表),可以使用更针对性的钩子(如woocommerce_loop_product_link_start),避免全局替换影响其他元素。

方法3:修复翻译函数调用(如果适用)

如果这段文本应该支持翻译,但原代码未使用翻译函数,找到输出<li>的代码位置,修改为带翻译函数的写法:

<li title="<?php _e('Details', 'your-theme-text-domain'); ?>">

替换your-theme-text-domain为当前主题或插件的文本域,之后你的gettext过滤器就能正常生效了。

内容的提问来源于stack exchange,提问作者smack857

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:00:42