当前位置: 首页 > 知识库问答 >
问题:

在woocommerce管理页面中显示我的自定义元数据

祖浩淼
2023-03-14

我一直在与Wordpress和Woocommerce合作,在我的管理产品页面中添加一个自定义元字段。我有一切工作正常,除了当我保存产品时,它不会显示我在我的元框中输入的信息。

我检查了数据库,数据确实保存了,我看到我在值中输入的数据,元字段名在元键中。这让我相信,除了在产品保存后在管理产品页面上显示价值外,其他一切都在运行。

我认为问题在于这两个函数中的一个,但不确定,它可能在save函数中,尽管它调用update\u post\u meta。

我认为我的问题是:

function variable_fields( $loop, $variation_data ) {
?>  
    <tr>
        <td>
            <div>
                    <label><?php _e( 'My Custom Field', 'woocommerce' ); ?></label>
                    <input type="text" size="5" name="my_custom_field[<?php echo $loop; ?>]" value="<?php echo $variation_data['_my_custom_field'][0]; ?>"/>
            </div>
        </td>
    </tr>
<?php
}

function variable_fields_js() {
?>
<tr>
        <td>
            <div>
                    <label><?php _e( 'My Custom Field', 'woocommerce' ); ?></label>
                    <input type="text" size="5" name="my_custom_field[' + loop + ']" />
            </div>
        </td>
    </tr>
<?php
}

这是保存数据的函数,万一问题可能在这里?

function variable_fields_process( $post_id ) {
    if (isset( $_POST['variable_sku'] ) ) :
        $variable_sku = $_POST['variable_sku'];
        $variable_post_id = $_POST['variable_post_id'];
        $variable_custom_field = $_POST['my_custom_field'];
        for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) :
            $variation_id = (int) $variable_post_id[$i];
            if ( isset( $variable_custom_field[$i] ) ) {
                update_post_meta( $variation_id, '_my_custom_field', stripslashes( $variable_custom_field[$i] ) );
            }
        endfor;
    endif;
}

通过查看代码,我看不到任何东西。除了我保存产品时,其他一切都正常工作,输入的数据没有显示(但它在数据库中),因此我认为它可能与保存时发生冲突,在字段中显示保存的值。

谢谢你的帮助

value="<?php echo $variation_data['_my_custom_field'][0]; ?>"

共有2个答案

柯树
2023-03-14

我知道这有点晚了,但我设法解决了这个问题,并想与大家分享。

基本上WooCommerce已经放弃了$variation_data。您现在需要将$变化添加到您的函数并获得id。有了ID,你可以让他们得到post_meta/自定义字段。这可以这样做:

function variable_fields( $loop, $variation_data, $variation ) {
    $get_variation_id = $variation->ID;
    $data_to_get = get_post_meta($get_variation_id, '_my_custom_field', true );

这一行:

value="<?php echo $variation_data['_my_custom_field'][0]; ?>"

然后变成:

value="<?php echo $data_to_get; ?>"

就这样了!我希望这对你和其他看到这一页的人有所帮助。

令狐宣
2023-03-14

我建议您尝试使用高级自定义字段(ACF)插件,假设这是针对您的站点的,而不是用于发布插件的代码。

我还开始尝试将自定义字段编码到一个网站,然后在几页代码后意识到,ACF插件在10次点击和2分钟内完成了同样的工作,这些代码远远超出了“仅仅添加一个字段”的业务需求。有时候你只需要务实一点,并接受偶尔赢得调试游戏的最佳方式是一开始不玩编码游戏。

如果这不是您或SO正在寻找的答案,请道歉。

 类似资料:
  • 我目前正在成功地向我的WooCommerce产品页面添加一个字段,该字段显示以下值: 在推车(前端), 在结账页面(前端), 在订单页(前端), 并在管理个人订单页面(后端)。 问题是:它在管理订单的“自定义字段”元框中没有显示为自定义字段,其值在其中,而只是在订单页面中显示为文本。 这是我的工作代码: 我认为这是代码的最后一点需要更改。它当前显示订单项下的文本,因此我可能需要调整? 我什么都试过

  • 我想在WooCommerce购物车和结帐页面中同时显示使用高级自定义字段插件创建的自定义字段的值。 我正在我的主题页面,仅在产品的单个页面中显示: 非常感谢大家对我的帮助,请原谅我的英语。

  • 我创建了一些代码来显示woocommerce上的库存可用性 问题是,如果我更改了自定义字段文本,那么所有以前的订单都会用新的自定义字段文本更新。 例如:一个客户在2021年1月确认了一个产品的订单,其中自定义字段文本是“产品将在2021年3月提供”。第二客户在2021年3月确认了相同的产品订单,其中新的自定义字段文本是“产品将在2021年5月提供”。 两份订单都显示了最后一个自定义字段文本“产品将

  • 我想在页面中添加一个自定义按钮,管理员可以在其中手动创建新订单(管理员订单页面)。 管理员- 在我添加产品和点击编辑按钮后,我可以在添加元按钮附近显示自定义按钮吗?我找不到可以使用的钩子。 我已经添加了上面的代码。我得到了结果,但按钮显示后不久,我添加的产品。我只希望按钮显示时,我点击编辑按钮。 #更新 当我添加以下代码时,它起了作用。这条路对吗?由于设置了同一字段中的按钮

  • 基于“在购物车和订单项名称下显示伍兹商业产品自定义字段”回答我以前的一个问题,代码在产品编辑页面上显示自定义字段。当填写这些字段时,数据将显示在产品页面上。 下面是代码: 如何在“管理”面板的“编辑订单”页面上显示自定义字段?它应该在产品名称后显示这些字段。 更新 据我所知,woocommerce\u checkout\u create\u order\u line\u item对此负责。但我无法

  • 我正在搜索和尝试它2天没有成功,请帮助。 我想筛选woocommerce订单,以便根据产品属性将其他详细信息从db添加到订单详细信息页面,但我找不到适合此任务的woocommerce操作/筛选器挂钩。这里假设变量; 如果,那么我需要将自定义数据从数据库添加到订单详细信息页面。 注意:我不想添加额外的元框,而是想更改订单明细表: 将默认产品映像替换为存储在数据库和中的映像, 在产品名称下面添加包含自