【问题标题】:Woocommerce Product Vendor extension - Loading ACF fields into a vendor's store frontWoocommerce 产品供应商扩展 - 将 ACF 字段加载到供应商的店面
【发布时间】:2022-06-11 17:39:29
【问题描述】:

我正在使用 ACF 将字段添加到我的供应商的仪表板个人资料页面。我目前有一个测试 ACF 字段,使用我的子主题的 functions.php 中的这个简单挂钩,仅从所有供应商的产品列表页面上的 WP Admin 配置文件页面加载该字段:

add_action( 'woocommerce_archive_description', 'vendor_profile', 7 );

function vendor_profile() { ?>
    <?php if(get_field('founded_on')) { ?>

        <?php the_field('founded_on'); ?>

    <?php }
}

也许我拉错了钩子,但我似乎无法在产品供应商前端页面中找到正确的钩子。

我需要帮助自定义它,以便当您在供应商的产品页面上时,它会从该特定供应商的配置文件中提取 ACF 字段。目前,它部分有效;但是它只提取所有不同供应商的 WP 主管理员的数据。

我知道有一种方法可以为每个特定供应商的页面提取供应商 ID 并让它为他们的页面加载他们的数据,但我的 php 知识非常有限。我通常只是寻找现有的代码并对其进行调整。不幸的是,我还没有找到任何有效的解决方案,这是我最接近让自定义字段在供应商页面上工作的方法。

或者,如果有人能指出一个更好的解决方案,让我创建客户字段供供应商填写,这些字段将加载到他们的前端页面上,那就太好了。我已经尝试过 Nicola Mustone 的解决方案 (here),这本来是完美的,但我无法让它在供应商的商店资料表单页面上加载新的自定义字段,也无法将这些字段加载到该供应商的店面页。基于 cmets,它只显示给站点的管理员并且只有他们可以编辑它。没有可见的方式将其加载到店面,这违背了目的。

【问题讨论】:

    标签: woocommerce hook advanced-custom-fields


    【解决方案1】:

    我想提供者是在WordPress系统中具有一定级别的用户?

    考虑到这是您的情况,ACF 字段需要一些额外的参数才能显示:

    $post_id = false; // current post
    $post_id = 1; // post ID = 1
    $post_id = "user_2"; // user ID = 2
    $post_id = "category_3"; // category term ID = 3
    $post_id = "event_4"; // event (custom taxonomy) term ID = 4
    $post_id = "option"; // options page
    $post_id = "options"; // same as above
    
    $value1 = the_field( 'my_field', $post_id );
    $value2 = get_field( 'my_field', $post_id );
    

    以 ACF 文档中的一些示例为例,但在您的特定情况下,您必须传递用户的 ID

    the_field('founded_on', 'user_' . $user->ID );
    echo get_field('founded_on', 'user_' . $user->ID );
    
    

    function documentation the_field()

    【讨论】:

    • 供应商对其店面的后端访问权限有限。我发现 ACF 很容易将这些字段加载到供应商的配置文件中。困境是在填充数据后提取数据。目前,前端提取的数据是 WP Admin 的配置文件,而不是特定供应商自己的数据。 (即,如果您在供应商的店面,它应该加载该特定供应商的 ACF 数据,但相反,所有供应商页面都只提取 WP 管理员的 ACF 数据)。如果我正确理解了你的代码,那是不是只拉一个 id 为 2 的用户?
    • 没错,ACF 对丰富 WordPress 的任何内容都有很大帮助。在这个例子中,我只选择了 ID 为 200 echo get_field('founded_on', 'user_200' );的用户信息
    【解决方案2】:

    你需要拉取用户的用户ID,然后使用user_{$user-&gt;ID}格式的帖子ID作为ACF字段的第二个参数。

    如果我理解你的问题,那么这应该可行。

    add_action( 'woocommerce_archive_description', 'vendor_profile', 7 );
    
    function vendor_profile() {
        $user = wp_get_current_user();
        if ( get_field( 'founded_on', 'user_' . $user->ID ) ) {
            the_field( 'founded_on', 'user_' . $user->ID );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2018-05-12
      • 2020-10-28
      • 2018-02-22
      • 2021-05-15
      相关资源
      最近更新 更多