|

Pridanie nového poľa produktu

Pridanie nového vlastného poľa produktu vo Woocomerce

//pridanie pola mje pole
if ( ! function_exists( 'moje_pole_create_custom_field' ) ) :
    function skladova_pozicia_create_custom_field() {
        $args = array(
        'id' => '_moje_pole_field',
        'label' => __( 'Moja pole' ),
        'class' => 'cfwc-custom-field',
        'desc_tip' => true,
        'description' => __( 'Moje pole'),
        );
        woocommerce_wp_text_input( $args );
    }
endif;
add_action( 'woocommerce_product_options_inventory_product_data', 'moje_pole_create_custom_field' );

   ////ulozenie hodnoty
if ( ! function_exists( 'moje_pole_save_field' ) ) :
   function moje_pole_save_field( $post_id ) {
    $product = wc_get_product( $post_id );
    $title = isset( $_POST['_moje_pole_field'] ) ? $_POST['_moje_pole_field'] : '';
    $product->update_meta_data( '_moje_pole_field', sanitize_text_field( $title ) );
    $product->save();
   }
endif;
add_action( 'woocommerce_process_product_meta', 'moje_pole_save_field' );

Plugin „úrovne produktu“ ktorý pridá do administračného rozhrania produktu 2 polia „úroven“ a „vlastna_uroven“ a podla vyplnene hodnoty sa potom zobrazí na stránke produktu.

<?php 

/*
Plugin Name: Úrovne produktov
Plugin URI:  
Description: Pridá možnosť nastaviť produktom 3 úrovne použitia alebo vlastnú hodnotu.
Version:     1.0
Author:      Areaweb
*/

//*******  PRIDANIE POLIA UROVEN
if ( ! function_exists( 'uroven_create_custom_field' ) ) :
    function uroven_create_custom_field() {
?>
        <div class="uroven_options_group">

        <?php
        $args1 = array(
        'id' => '_uroven_field',
        'label' => __( 'Úroveň použitia' ),
        'class' => 'input-text short',   // pridame css classy
        'desc_tip' => true,
        'description' => __( 'Úroveň'),
        'options' => array(
            '' => 'vybrať úroveň',
            'profi' => 'profi',
            'polo-profi' => 'polo-profi',
            'hobby' => 'hobby',
            'vlastná hodnota' => 'vlastná hodnota',
        ),
        );
        woocommerce_wp_select( $args1 );   // od tohto záleží či input bude text, zoznam, checkbox...

        $args2 = array(
            'id' => '_vlastna_uroven_field',
            // 'label' => __( 'Úroveň použitia' ),
            'class' => 'input-text',
            'desc_tip' => true,
            'description' => __( 'Vlastna úroveň použitia'),
            );
            woocommerce_wp_text_input( $args2 ); // od tohto záleží či input bude text, zoznam, checkbox...
            ?>
            </div>
            <?php
    }
endif;
add_action( 'woocommerce_product_options_general_product_data', 'uroven_create_custom_field' );

 //*******    ULOZENIE HODNOTY
if ( ! function_exists( 'uroven_save_field' ) ) :
   function uroven_save_field( $post_id ) {
    $product = wc_get_product( $post_id );
    $title = isset( $_POST['_uroven_field'] ) ? $_POST['_uroven_field'] : '';
    $title2 = isset( $_POST['_vlastna_uroven_field'] ) ? $_POST['_vlastna_uroven_field'] : '';
    $product->update_meta_data( '_uroven_field', sanitize_text_field( $title ) );
    $product->update_meta_data( '_vlastna_uroven_field', sanitize_text_field( $title2 ) );
    $product->save();
   }
endif;
add_action( 'woocommerce_process_product_meta', 'uroven_save_field' );



//*******  PRIDANIE NA STRANKU PRODUKTU
add_action( 'woocommerce_single_product_summary', 'zobraz_uroven_pouzitia', 1);              // 1. moznost
//add_action( 'woocommerce_before_single_product', 'zobraz_uroven_pouzitia', 10);            // 2. moznost
//add_action( 'woocommerce_before_single_product_summary', 'zobraz_uroven_pouzitia', 10);    // 3. moznost

//*******  PRIDANIE DO LOOPU
add_action( 'woocommerce_shop_loop_item_title', 'zobraz_uroven_pouzitia',40);    // 1. moznost
//add_action( 'woocommerce_before_shop_loop_item', 'zobraz_uroven_pouzitia');    // 2. moznost



function zobraz_uroven_pouzitia(){
                //  global $product;
                //  $id = $product->get_ID();
                 $id = get_the_ID();
                 $uroven = get_post_meta( $id, '_uroven_field', true );
                 $vlastna_uroven = get_post_meta( $id, '_vlastna_uroven_field', true );
                if($uroven!=''){ echo '<small style="position:absolute"><i class="fas fa-arrow-alt-circle-up"></i> admin mod</small>';} // ADMIN MOD SHOW

                 if( $uroven =='profi' ){
                     echo '<span class="uroven-nalepka" style="background-color:rgb(236,177,60);"><i class="fas fa-star"></i>&nbsp;&nbsp; Profesionál</span>';
                 }
                  if( $uroven =='polo-profi' ){
                    echo '<span class="uroven-nalepka" style="background-color:#3474BF;"><i class="fas fa-warehouse"></i>&nbsp;&nbsp; Polo-profi</span>';  //<i class="fas fa-star-half-alt"></i>
                }
                 if( $uroven =='hobby' ){
                    echo '<span class="uroven-nalepka" style="background-color:rgb(119,184,234);"><i class="fas fa-user-alt"></i>&nbsp;&nbsp; Hobby</span>';
                }
                else if ($vlastna_uroven!=''){
                    echo '<span class="uroven-nalepka" style="background-color:rgb(119,184,234);"><i class="fas fa-user-alt"></i>&nbsp;&nbsp' . get_post_meta( $id, '_vlastna_uroven_field', true ) . '</span>'; 
                }
}

Pridá na stránku CSS :

// ********** PRIDANIE CSS
add_action( 'wp_head', 'pridaj_css_uroven' );
function pridaj_css_uroven(){
    //if(is_single()){
        echo '
        <style>
        .uroven-nalepka{
            color:white; 
            padding:5px 17px;
            font-size:12px;
        }
        .single-product .uroven-nalepka{
            position:relative;
            top:-20px;
        }
        .section-products-carousel .product-loop-body .woocommerce-loop-product__title{
            display:none
        }
        </style>
        ';
   // }
}

Pridá JavaScript do admin menu:

add_action( 'admin_footer', 'pridaj_js_css_admin_uroven' );
function pridaj_js_css_admin_uroven(){
        echo '<style>

        </style>';
        echo '
        <script>
        let vlastnaUrovenField = document.querySelector("._vlastna_uroven_field_field");
        let uroven = document.querySelector("#_uroven_field")

        if( document.querySelector("#_vlastna_uroven_field").value!="" ) {
            uroven.value="vlastná hodnota"
        }
        else {
            vlastnaUrovenField.style.display="none"
        }
        
        uroven.addEventListener("change", function(){
            if(uroven.value == "vlastná hodnota"){
                vlastnaUrovenField.style.display="block"
            }
            else vlastnaUrovenField.style.display="none"
            console.log("localhst script")
        })
        </script>
        ';
}

Similar Posts

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *