php - Woocommerce 订阅 - 在订阅 ID 旁边添加产品名称

标签 php wordpress woocommerce subscriptions

我找不到专门针对 Woocommerce 订阅的论坛,所以我希望 Stack 可以帮助我!

在“我的订阅”页面上,有一个表格显示了客户的所有订阅。订阅以 ID 号命名。我想在 ID 旁边添加订阅产品名称。

以下是插件中与将 ID 添加到表相关的代码:

<?php foreach ( $subscriptions as $subscription_id => $subscription ) : ?>
    <tr class="order">
        <td class="subscription-id order-number" data-title="<?php esc_attr_e( 'ID', 'ultimatewoo-pro' ); ?>">
            <a href="<?php echo esc_url( $subscription->get_view_order_url() ); ?>"><?php echo esc_html( sprintf( _x( '#%s', 'hash before order number', 'ultimatewoo-pro' ), $subscription->get_order_number() ) ); ?></a>
            <?php do_action( 'woocommerce_my_subscriptions_after_subscription_id', $subscription ); ?>
        </td>
    </tr>
<?php endforeach; ?>

您会注意到我可以使用一个钩子(Hook)在 ID 后注入(inject)代码,我想出了如何做到这一点。问题是,如果我手动输入订阅 ID,我只能让它工作。

这是我的代码,其中 1341 是订阅 ID。这成功地在表中的 ID 后面注入(inject)了 1341 的产品名称:

function custom_add_subscription_name_to_table() {

    $subscription = wcs_get_subscription(1341);

    foreach ( $subscription->get_items() as $item_id => $item ) {
        $_product  = apply_filters( 'woocommerce_subscriptions_order_item_product', $subscription->get_product_from_item( $item ), $item );

        if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) {

            echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', sprintf( '<a href="%s">%s</a>', get_permalink( $item['product_id'] ), $item['name'] ), $item ) );

        }
    }
}
add_action( 'woocommerce_my_subscriptions_after_subscription_id', 'custom_add_subscription_name_to_table', 35 );

问题是,我不知道如何将 ID 作为变量动态获取。如果我必须手动输入ID,我显然不能使用它。有什么办法吗?

我觉得我很近,但又很远!

谢谢!

最佳答案

你很接近。你不需要 id 来做你正在做的事情。 WordPress Hook 系统将订阅传递到函数中。你只需要使用它。将您的代码更改为以下内容:

function custom_add_subscription_name_to_table( $subscription ) {

    foreach ( $subscription->get_items() as $item_id => $item ) {
        $_product  = apply_filters( 'woocommerce_subscriptions_order_item_product', $subscription->get_product_from_item( $item ), $item );

        if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) {

            echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', sprintf( '<a href="%s">%s</a>', get_permalink( $item['product_id'] ), $item['name'] ), $item ) );

        }
    }
}
add_action( 'woocommerce_my_subscriptions_after_subscription_id', 'custom_add_subscription_name_to_table', 35 );

关于php - Woocommerce 订阅 - 在订阅 ID 旁边添加产品名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40314255/

相关文章:

php - 一列上的多个计数值

php - 使用 preg_match() 显示字符串的前 n 段

wordpress - 使用 WordPress 3 创建博客网络

wordpress - 客户登录后的 Woocommerce Hook

wordpress - 获取 Woocommerce 订单中每个产品的税率百分比

php - 不明白为什么 if 语句没有 {}

php - PHP中的唯一和临时文件名?

php - 在 Woocommerce 我的帐户地址和帐户详细信息中设置唯一的验证错误通知

php - 在 Woocommerce 管理订单预览中显示自定义数据

html - WooCommerce - 如何删除空格