在WooCommerce Admin产品列表中,我已经 for each 产品添加了一个带有简单按钮的输入框,它应该会更新库存数量.例如,如果我输入‘5’,然后点击‘刷新’按钮,我注意到什么都没有发生,产品库存数量也没有更新.
有没有我应该用来描述更新过程的特定术语?
需要指出的是,我在unctions.php文件中使用了这段代码.
add_action( 'manage_product_posts_custom_column', 'custom_product_is_in_stock_column_content', 10, 2 );
function custom_product_is_in_stock_column_content( $column, $product_id ) {
switch ( $column ) {
case 'is_in_stock':
echo '<div class="stock-box">';
echo '<form method="post">';
echo '<input type="number" class="stock-input" name="stock_value" value="' . ( get_post_meta( $product_id, '_stock_status', true ) == 'instock' ? 1 : 0 ) . '" min="0">';
echo '<button type="submit" class="stock-button" name="update_stock">↻</button>';
echo '</form>';
echo '</div>';
break;
}
}
add_action( 'admin_post_update_stock', 'update_product_stock' );
function update_product_stock() {
if ( isset( $_POST['stock_value'] ) && isset( $_POST['update_stock'] ) ) {
$stock_value = intval( $_POST['stock_value'] );
$product_id = isset( $_POST['post_ID'] ) ? intval( $_POST['post_ID'] ) : 0;
if ( $product_id > 0 ) {
$new_status = $stock_value > 0 ? 'instock' : 'outofstock';
wc_update_product_stock_status( $product_id, $new_status );
}
}
wp_safe_redirect( admin_url( 'edit.php?post_type=product' ) );
exit;
}