编辑woocommerce外部网址

时间:2017-04-28 15:41:58

标签: php html wordpress woocommerce

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

/**
 * 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。 有人可以帮助我找到哪个文件可以编辑吗?

1 个答案:

答案 0 :(得分:0)

这是我的三部分方法。首先,您需要向产品元数据添加新的文本输入。然后你需要保存这些数据。您可以在此处输入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 );