【问题标题】:Edit woocommerce external url编辑 woocommerce 外部网址
【发布时间】:2017-04-28 15:41:58
【问题描述】:

我需要有关编辑 WC 外部产品 URL 的帮助, 我想将按钮类型(html)更改为 <button data-sell-product="product-id">Buy text</button> 这就是我的 content-product.php 的样子: `>

/**
 * woocommerce_before_shop_loop_item_title hook.
 *
 * @hooked woocommerce_show_product_loop_sale_flash - 10
 * @hooked woocommerce_template_loop_product_thumbnail - 10
 */
do_action( 'woocommerce_before_shop_loop_item_title' );

/**
 * woocommerce_shop_loop_item_title hook.
 *
 * @hooked woocommerce_template_loop_product_title - 10
 */
do_action( 'woocommerce_shop_loop_item_title' );

/**
 * woocommerce_after_shop_loop_item_title hook.
 *
 * @hooked woocommerce_template_loop_rating - 5
 * @hooked woocommerce_template_loop_price - 10
 */
do_action( 'woocommerce_after_shop_loop_item_title' );

/**
 * woocommerce_after_shop_loop_item hook.
 *
 * @hooked woocommerce_template_loop_product_link_close - 5
 * @hooked woocommerce_template_loop_add_to_cart - 10
 */
do_action( 'woocommerce_after_shop_loop_item' );
?>

` 我从仪表板尝试过,但我也需要在 HTML 中进行编辑。 因此,我只需要从编辑产品仪表板设置一个 URL,我只需要添加产品 ID。 有人可以帮我在哪个文件中找到要编辑的吗?

【问题讨论】:

  • 如果您想更改调用loop/add-to-cart.php 模板的woocommerce_template_loop_add_to_cart() 中的按钮。您可以覆盖该模板或过滤woocommerce_loop_add_to_cart_link
  • echo apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf( ' <button data-selly-product="%s">Pay</button>', esc_url( $product->add_to_cart_url() ), esc_attr( isset( $class ) ? $class : 'button' ), esc_html( $product->add_to_cart_text() ) ), 我试过这样,但它只在商店页面中显示一种产品。
  • echo apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf( '<button data-selly-product="%s" class="%s">%s</button> ', esc_attr( $product->add_to_cart_url() ), esc_attr( isset( $class ) ? $class : 'button' ), esc_html( $product->add_to_cart_text() ) ), 好吧,它像这样工作,模式正在打开,但是当我添加产品 ID 从仪表板时,它会自动将 http:// 添加到它,因此它无法正常工作。我怎么也可以编辑它?
  • "从仪表板添加产品 ID 时,它会自动添加 http://" 我不知道您的意思是什么?你可以解释吗?另外,请用代码编辑您的问题,在 cmets 中阅读代码真的很难。
  • 我要做的是代替产品 URL,我只需要添加来自 selly.gg 的产品 ID。当我按下按钮时,该按钮正在工作,我显示的模式但要正常工作,它只需要存储我添加的产品 ID。但是当我添加产品时,它会添加 http:// 。我不需要那个,因为我的模态不工作。 prntscr.com/f22iko 这是我需要修改的输入。我希望这已经足够清楚了。

标签: php html wordpress woocommerce


【解决方案1】:

这是我的 3 部分方法。首先,您需要向产品元框添加新的文本输入。然后,您需要保存该数据。您将在此处输入 selly.gg ID。最后,您将过滤添加到购物车链接以将其转换为按钮并将您在前两个步骤中保存的 ID 传递给它。它应该看起来像这样,但我没有测试它,所以要小心拼写错误。

/*
 * Add text inputs to product metabox
 *
 * @return print HTML
 * @since 1.0
 */
function so_43684081_add_to_metabox(){
    global $post;

    $product = wc_get_product( $post->ID );

    // if variable billing is enabled, continue to show options. otherwise, deprecate
    $show_billing_period_options = wc_string_to_bool( $product->get_meta( '_variable_billing' ) );

    echo '<div class="options_group show_if_external">';

        woocommerce_wp_text_input( array(
            'id' => '_selly_id',
            'label' => __( 'Selly.gg Product ID', 'your-plugin' ),
        ) );

    echo '</div>';

}
add_action( 'woocommerce_product_options_general_product_data', 'so_43684081_add_to_metabox' );




/*
 * Save extra meta info
 *
 * @param object $post
 * @return void
 */
function so_43684081_save_product_meta( $product ) {

    if ( isset( $_POST['_selly_id'] ) ) {
        $product->update_meta_data( '_selly_id', sanitize_text_field( $_POST['_selly_id'] ) );
    } else {
        $product->delete_meta_data( '_selly_id' );
    }

}
add_action( 'woocommerce_admin_process_product_object', 'so_43684081_save_product_meta' );


/*
 * Modify the external link
 *
 * @param object $post
 * @return void
 */
function so_43684081_loop_add_to_cart_link( $link, $product ) {  

    if( $product->is_type( 'external' ) ) {
        $link = sprintf( '<button data-selly-product="%s" class="%s">%s</button>',
            esc_attr( $product->get_meta( '_selly_id' ) ),
            esc_attr( isset( $class ) ? $class : 'button' ),
            esc_html( $product->add_to_cart_text() )
        );
    }
    return $link;

add_filter( 'woocommerce_loop_add_to_cart_link', 'so_43684081_loop_add_to_cart_link', 10, 2 );

【讨论】:

  • 进行测试没问题。但这应该是一个插件。
  • 我设法使用插件在我的管理仪表板中添加了字段。我现在可以添加产品 ID。但是如何在woocommerce_loop_add_to_cart_link 中使用它,这就是我应该如何访问它,但我不知道如何在数据销售产品上使用它。 $my_admin_field_val = get_post_meta( $post-&gt;ID, "wccaf_your_admin_field_name", true );
  • 我的功能不起作用吗?无论如何,你可以用你的代码替换$product-&gt;get_meta( '_selly_id' ),但你也需要global $post,因为我没有在任何地方调用它。
猜你喜欢
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 2023-03-13
  • 2022-01-20
  • 1970-01-01
  • 2015-06-17
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多