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

如何查询wp_options表中what_is_this值为product的所有标签?

获取what_is_this值为product的标签方法

方法一:直接数据库查询

你的标签额外数据以tag_(标签ID)为键存在wp_options表中,且option_value是序列化后的数组,可通过以下SQL语句查询:

SELECT 
    SUBSTRING(option_name, 4) AS tag_id,
    option_value
FROM 
    wp_options
WHERE 
    option_name LIKE 'tag\_%' 
    AND option_value LIKE '%s:12:"what_is_this";s:7:"product";%'
  • tag\_%用于精准匹配以tag_开头的选项名(转义下划线是因为LIKE语法中_是通配符)
  • SUBSTRING(option_name, 4)从tag_XXX中提取出标签ID
  • 第二个LIKE条件匹配序列化后包含what_is_this => product的字段值

方法二:WordPress原生函数实现(推荐)

直接操作数据库存在安全风险,更推荐用WordPress内置函数处理,代码如下:

global $wpdb;

// 获取所有tag_开头的选项
$tag_options = $wpdb->get_results( "SELECT option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE 'tag\_%'" );

$target_tags = [];

foreach ( $tag_options as $option ) {
    // 反序列化选项值为数组
    $tag_meta = maybe_unserialize( $option->option_value );
    
    // 检查目标字段是否符合条件
    if ( isset( $tag_meta['what_is_this'] ) && $tag_meta['what_is_this'] === 'product' ) {
        // 提取标签ID
        $tag_id = (int) str_replace( 'tag_', '', $option->option_name );
        // 获取完整的标签对象
        $tag = get_term( $tag_id, 'post_tag' );
        
        if ( $tag && ! is_wp_error( $tag ) ) {
            $target_tags[] = $tag;
        }
    }
}

// 遍历输出结果示例
foreach ( $target_tags as $tag ) {
    echo "标签ID:{$tag->term_id},标签名:{$tag->name}<br>";
}

优化建议:迁移到Termmeta表

当前把标签元数据存在wp_options不是WordPress的标准做法,标准应该用termmeta表。你可以用以下代码迁移数据,之后查询会更高效:

global $wpdb;

$tag_options = $wpdb->get_results( "SELECT option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE 'tag\_%'" );

foreach ( $tag_options as $option ) {
    $tag_id = (int) str_replace( 'tag_', '', $option->option_name );
    $tag_meta = maybe_unserialize( $option->option_value );
    
    // 将元数据写入termmeta表
    foreach ( $tag_meta as $key => $value ) {
        update_term_meta( $tag_id, $key, $value );
    }
    
    // 删除旧的options数据(可选)
    delete_option( $option->option_name );
}

迁移完成后,只需一行代码即可查询目标标签:

$target_tags = get_terms( [
    'taxonomy' => 'post_tag',
    'meta_query' => [
        [
            'key' => 'what_is_this',
            'value' => 'product',
            'compare' => '='
        ]
    ]
] );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:42:23