php 添加列和操作按钮,以恢复库存在宇电子商务管理产品列表表

hmae6n7t  于 2022-12-21  发布在  PHP
关注(0)|答案(1)|浏览(107)

我试图添加一个额外的列到管理员的产品列表表在宇商务。我希望行动按钮,以恢复斯托克或只是增加一个点击股票。到目前为止,我的代码添加了列,我可以添加一个图标,或一个按钮,但我不知道如何进行使按钮恢复股票或增加一个。行动按钮只在产品缺货时可见
下面是代码:任何帮助都将不胜感激。

add_filter( 'manage_edit-product_columns', 'add_to_admin_products_column', 9999 );
 
function add_to_admin_products_column( $columns ){
   $columns['Columnx'] = 'Columnx';
   return $columns;
}
 
add_action( 'manage_product_posts_custom_column', 'admin_products_action_column_content', 10, 2 );
 
function admin_products_action_column_content( $column, $product_id ){
    if ( $column == 'columnx' ) {
        $product = wc_get_product( $product_id );
      echo $product->get_catalog_visibility();
    }
}
jqjz2hbq

jqjz2hbq1#

经过几个小时的努力,我终于让它工作起来了。我知道它很脏,但对我很有效。改进是受欢迎的。

add_filter( 'manage_edit-product_columns', 'wins_admin_products_visibility_column', 9999 );
 
function wins_admin_products_visibility_column( $columns ){
   $columns['act'] = 'Actions';
   return $columns;
}
 
add_action( 'manage_product_posts_custom_column', 'wins_admin_products_action_column_content', 10, 2 );
 
function wins_admin_products_action_column_content( $column, $product_id ){
        $product = wc_get_product( $product_id );

        $stock_status = $product->get_stock_status();
    
    if ( $column == 'act' && $stock_status=='outofstock' ) {

        
        echo '<label style ="padding: 5px; border-radius:3px; border-color:white-smoke; background-color:silver;" ><input type="checkbox" id="some_checkbox" style ="display:none" data-productid="' . get_the_ID() .'" class="some_checkbox" ' . checked( 'yes', get_post_meta( get_the_ID(), 'some_meta_key', true ), false ) . '/><small style="display:none;color:#7ad03a"></small>
        Make Vacant
        </label>';
        
    }
}

// this code adds jQuery script to website footer that allows to send AJAX request
add_action( 'admin_footer', 'misha_jquery_event' );
function misha_jquery_event(){

    echo "<script>jQuery(function($){
        $('.some_checkbox').click(function(){
            var checkbox = $(this),
                _stock = (checkbox.is(':checked') ? '1' : '0' );
            $.ajax({
                type: 'POST',
                data: {
                    action: 'productmetasave', // wp_ajax_{action} WordPress hook to process AJAX requests
                    value: _stock,
                    product_id: checkbox.attr('data-productid'),
                    myajaxnonce : '" . wp_create_nonce( "activatingcheckbox" ) . "'
                },
                beforeSend: function( xhr ) {
                    checkbox.prop('disabled', true );
                },
                url: ajaxurl, // as usual, it is already predefined in /wp-admin
                success: function(data){
                    checkbox.prop('disabled', false ).next().html(data).show().fadeOut(400);
                     window.location.reload();
                }
            });
        });
    });</script>";

}

// this small piece of code can process our AJAX request
add_action( 'wp_ajax_productmetasave', 'misha_process_ajax' );
function misha_process_ajax(){

    check_ajax_referer( 'activatingcheckbox', 'myajaxnonce' );

    if( update_post_meta( $_POST[ 'product_id'] , '_stock', $_POST['value'] ) ) {
        //$product->set_stock_status('instock');
        update_post_meta( $_POST[ 'product_id'] , '_stock_status','instock');
exit;
    }
//header("refresh:0");
    //exit;
    //die();
}

相关问题