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

在Dokan插件中获取WordPress商家URL失败,求助滑块链接问题

修复Dokan商家URL短代码的问题

看起来你的代码逻辑有点混乱,把查询过滤和短代码功能混在一起了,而且几个关键调用也存在错误,我来帮你梳理并修正:

原代码的核心问题

  • 短代码函数定位错误:store_query_filter作为短代码函数,不需要去修改WP_Query,它应该直接根据输入返回对应内容
  • 查询变量调用错误:get_query_var( $query->custom_store_url )完全不合法,你既没定义过这个自定义查询变量,参数格式也不对
  • 店铺信息调用错误:dokan_get_store_info()返回的是数组而非对象,且dokan_get_store_url()需要的是商家的用户ID,不是店铺信息里的字段
  • 函数没有处理空数据场景,也没接收短代码参数

修正后的代码

下面是一个可以正常工作的短代码,支持通过商家的slug或user_id参数获取店铺URL:

function get_vendor_store_url( $atts ) {
    // 设置短代码默认参数
    $atts = shortcode_atts( array(
        'slug'    => '', // 商家用户的slug
        'user_id' => ''  // 商家用户的ID
    ), $atts );

    // 优先使用user_id,没有则通过slug获取用户ID
    $user_id = ! empty( $atts['user_id'] ) ? absint( $atts['user_id'] ) : 0;
    
    if ( empty( $user_id ) && ! empty( $atts['slug'] ) ) {
        $seller_info = get_user_by( 'slug', sanitize_text_field( $atts['slug'] ) );
        $user_id = $seller_info ? $seller_info->ID : 0;
    }

    // 验证用户是Dokan商家后返回店铺URL
    if ( $user_id && dokan_is_user_seller( $user_id ) ) {
        $store_url = dokan_get_store_url( $user_id );
        return esc_url( $store_url );
    }

    // 未找到商家时返回空值或自定义提示
    return '';
}
add_shortcode( 'store_vendor_url', 'get_vendor_store_url' );

使用方法

  • 通过商家用户ID调用:[store_vendor_url user_id="123"]
  • 通过商家用户slug调用:[store_vendor_url slug="john-doe"]

滑块循环中的使用示例

如果你的循环能获取到商家的用户ID或slug,直接在循环里输出即可:

// 假设$vendor是循环中的商家对象,包含user_id字段
echo do_shortcode( '[store_vendor_url user_id="' . esc_attr( $vendor->user_id ) . '"]' );

或者直接调用函数跳过短代码,效率更高:

// 假设$vendor_user_id是商家的用户ID
if ( dokan_is_user_seller( $vendor_user_id ) ) {
    $store_url = dokan_get_store_url( $vendor_user_id );
    echo '<a href="' . esc_url( $store_url ) . '">访问店铺</a>';
}

这样就能正确获取到Dokan商家的店铺URL了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:57:01