基本上,我完成了为我的客户构建自定义插件。将产品添加到购物车后、结帐前的唯一一件事。用户能够更改产品的数量,是否可以显示所选数量,但禁用只读选项,以便客户能够在购物车页面中看到他选择的数量但无法更改?
并将其仅应用于我与插件一起使用的产品,无论是产品 ID 还是更好的类别 ID,因为那里的所有产品。其他产品显示,并且能够通过常规产品非虚拟且不单独销售的方式定期更改数量我需要找到一种方法来限制客户仅在购物车页面而不是在产品页面中更改某些产品的数量。
我真的很感谢任何帮助。
我已将一个函数附加到woocommerce_checkout_order_processed钩子上:
//check if woocommerce is acive
if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
add_action('woocommerce_checkout_order_processed', 'wc_on_place_order');
}
Run Code Online (Sandbox Code Playgroud)
该wc_on_place_order函数将在用户单击按钮后执行PLACE ORDER。然而,奇怪的是该函数执行了两次。
我的wc_on_place_order函数调用用 C# 编写的外部 api:
function wc_on_place_order( $order_id ) {
global $wpdb;
// get order object and order details
$order = new WC_Order( $order_id );
// get product details
$items = $order->get_items();
//return $items;
$products = array();
foreach ($items as $item) {
array_push($products,
array('userid' => $order->user_id, 'descr' => $item['name'], 'amt' => (float)$item['line_total'])
);
}
//passing $products to …Run Code Online (Sandbox Code Playgroud) 我在 WooCommerce 的“订单”部分添加了一个自定义列,用于运输邮政编码。该列及其值正确显示。
我无法弄清楚的是如何使该字段的排序工作(单击列标题)。我可以找到使用钩子“manage_edit-shop_order_sortable_columns”提到的其他代码示例,但这似乎不适用于该领域。
注意:我已经看到了关于此的其他 StackOverflow 问题,但似乎没有一个排序工作。
/**
* ADD ZIP CODE TO WOOCOMMERCE ORDERS LIST
*/
// Add column (working)
add_filter( 'manage_edit-shop_order_columns', 'custom_woo_columns_function' );
function custom_woo_columns_function( $columns ) {
$new_columns = ( is_array( $columns ) ) ? $columns : array();
unset( $new_columns[ 'order_actions' ] );
// all of your columns will be added before the actions column
$new_columns['zipcode'] = 'Zip Code';
//stop editing
$new_columns[ 'order_actions' ] = $columns[ 'order_actions' ];
return $new_columns;
}
// Change order of columns (working) …Run Code Online (Sandbox Code Playgroud) 有没有办法在 WooCommerce 中的购物车和结账之间添加一个新步骤?
我想在 woocommerce 上的购物车和结账之间添加一个名为(模式)的新步骤
编辑:
我有 4 个步骤,当我点击按钮进入第 2 个步骤时,它没有,它只是将我重定向到一个新页面(自定义页面)
我正在尝试将复选框添加到 WooCommerce(在管理面板中)的设置选项卡并使用以下代码:
add_action( 'woocommerce_product_options_general_product_data', 'wc_custom_add_custom_fields' );
function wc_custom_add_custom_fields() {
global $post;
woocommerce_wp_checkbox(array(
'id' => 'is_gift',
'label' => __('Gift', 'woocommerce' ),
'description' => __( 'Add gift label', 'woocommerce' ),
'value' => get_post_meta($post->ID, 'is_gift', true)
));
}
add_action( 'woocommerce_process_product_meta', 'wc_custom_save_custom_fields' );
function wc_custom_save_custom_fields() {
global $post;
if (!empty($_POST['is_gift'])) {
update_post_meta( $post->ID, 'is_gift', esc_attr( $_POST['is_gift'] ) );
}
}
Run Code Online (Sandbox Code Playgroud)
此代码显示复选框,但不保存更改。它仅适用于一种产品。我猜有什么问题$post->ID吗?
我在我的 woocommerce 订单页面中添加了一个自定义操作,如下所示,我还有一个自定义订单字段“餐数”。现在我想要的是当我批量选择订单并使用该自定义操作时,餐食数量应减少 1。
例如,如果订单 ID 1 和 2 分别有 15 和 12 餐,则在使用该操作后它应该变成 14 & 11 ...
我的订单页面截图,我创建的自定义钩子和自定义订单字段:
我的代码:
add_filter( 'bulk_actions-edit-shop_order', 'decrease_number_of_meals_by_1' );
function decrease_number_of_meals_by_1( $bulk_actions ) {
$bulk_actions['decrease_number_of_meals'] = 'Decrease Number of Meals by 1';
return $bulk_actions;
}
add_action( 'admin_action_decrease_number_of_meals', 'fire_my_hook' );
function fire_my_hook() {
if( !isset( $_REQUEST['post'] ) && !is_array( $_REQUEST['post'] ) )
return;
foreach( $_REQUEST['post'] as $order_id ) {
$order = new WC_Order( $order_id );
$no_of_meals = $order->get_post_meta( $order_id, '_wc_acof_{3}', true );
}
}
Run Code Online (Sandbox Code Playgroud)
我被困在这里,不知道如何进一步做。
请指导我如何实现这一目标。
我正在使用 woocommerce 插件。我目前有产品、评论,然后是产品详细信息页面中的相关产品。我想更改显示顺序。我想展示产品,它是相关产品,然后是评论。我曾尝试更改functions.php 中的优先级,但它不起作用。任何帮助,将不胜感激!
我有 woocommerce 的问题。我正在使用woocommerce_before_main_content钩子添加.jumbotron页面封面。我能够显示需要出现在背景图像上的页面标题和类别等内容,但显示的图像是旧图像,我不知道为什么但是wordpress会显示第一个产品图像缩略图和图像我在 woocommerce 的商店页面内选择了特色是不同的。有解决办法吗?我正在使用此代码:
function btheme_woocommerce_before_main_content()
{
if( has_post_thumbnail() ):
?>
<div class="jumbotron jumbotron-fluid shop-page-cover" style="background-image:url('<?php echo the_post_thumbnail_url(); ?>');">
<!-- <div class="parallax" data-parallax-image></div> -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 text-center">
<h1 class=""><?php woocommerce_page_title(); ?></h1>
<?php $categories = get_terms( array('taxonomy' => 'product_cat') ); ?>
<?php foreach( $categories as $category ): ?>
<h4 class="category-name d-inline"><?php echo $category->name; ?></h4>
<?php endforeach; ?>
</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="container-fluid content-wrapper" id="uptheme-woocommece-wrapper">
<?php
} …Run Code Online (Sandbox Code Playgroud) 我们需要在我们的产品中为 Prod ref/Cat 编号添加另一个字段,我发现下面的代码可以完美运行。
我现在需要为会计师软件使用的名义代码添加第二个字段。
我再次尝试使用以下代码,针对新字段进行了调整,但没有奏效。
function jk_add_custom_sku() {
$args = array(
'label' => __( 'Custom SKU', 'woocommerce' ),
'placeholder' => __( 'Enter custom SKU here', 'woocommerce' ),
'id' => 'jk_sku',
'desc_tip' => true,
'description' => __( 'This SKU is for internal use only.', 'woocommerce' ),
);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_sku', 'jk_add_custom_sku' );
function jk_save_custom_meta( $post_id ) {
// grab the SKU value
$sku = isset( $_POST[ 'jk_sku' ] ) ? sanitize_text_field( $_POST[ 'jk_sku' ] ) …Run Code Online (Sandbox Code Playgroud) 这里有人使用Elementor吗?你如何通过代码触发弹出窗口?例如。
function popup_call(){
...
if(....){
//trigger the popup here...
}
}
Run Code Online (Sandbox Code Playgroud)