Témata

⌘K
  1. Témata
  2. Úryvky kódu

Úryvky kódu

Jedná se o Na úrovni vývojářů dokument. Pokud nejste obeznámeni s kódem/šablonami a řešením potenciálních konfliktů, obraťte se na vývojáře, který je obeznámen s FooEvents a/nebo WooCommerce.

Důležité, nejprve si přečtěte #

Tyto úryvky jsou poskytovány jako laskavost a nejsou součástí nabídky produktů FooEvents. Jsou považovány za úpravy a nejsou oficiálně podporovány společností FooEvents. Z tohoto důvodu neposkytujeme podporu pro fragmenty a úpravy podle našich pravidel. Podmínky služby. Používáte na vlastní nebezpečí.

Automatické dokončování objednávek #

To umožňuje automatické odeslání letenek po přijetí platby namísto ručního dokončování objednávky. Ujistěte se, že jsou produkty události nastaveny na "Virtuální" a "Ke stažení na", jak je vysvětleno v našem dokumentace nápovědy, v opačném případě se pořadí nebude dokončit automaticky, i když byla provedena platba.

Přidejte následující kód vašeho podřízeného tématu functions.php nebo prostřednictvím zásuvného modulu, který umožňuje přidání vlastních funkcí, jako je např. Úryvky kódu plugin. Vyhněte se přidávání vlastního kódu přímo do nadřazeného tématu. functions.php protože při aktualizaci tématu bude přepsán.

Stav "Dokončeno" můžete také změnit na jiný stav objednávky, například "Zpracovává se".

/**
 * Automatické dokončení všech objednávek WooCommerce.
 */
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( "completed" );
}

Zobrazení jména a e-mailu účastníka v e-mailu správce nové objednávky #

Přidejte následující úryvek kódu do tématu. functions.php soubor. E-mail, který se zobrazí, můžete změnit pomocí jiného e-mailu. háček.

.

[php]
add_action( 'woocommerce_email_customer_details', 'fooevents_display_attendee_details_in_new_order_email', 10 , 4);
function fooevents_display_attendee_details_in_new_order_email($order, $sent_to_admin, $plain_text, $email){
    echo "<h3>Podrobnosti o účastnících</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Jméno</strong>: ".$ticket['WooCommerceEventsAttendeeName'].<br />';
            echo '<strong>Příjmení</strong>: '.$ticket['WooCommerceEventsAttendeeLastName'].<br />';
            echo '<strong>E-mailová adresa</strong>: '.$ticket['WooCommerceEventsAttendeeEmail'].<br />';
            echo "</p>";
        }
    }
}

Zobrazení všech vlastních polí pro účastníky bez štítků v e-mailu správce nové objednávky #

Přidejte následující úryvek kódu do tématu. functions.php soubor. E-mail, který se zobrazí, můžete změnit pomocí jiného e-mailu. háček.

.

[php]
add_action( 'woocommerce_email_customer_details', 'fooevents_display_attendee_details_in_new_order_email', 10 , 4);
function fooevents_display_attendee_details_in_new_order_email($order, $sent_to_admin, $plain_text, $email){
    echo "<h3>Podrobnosti o účastnících</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Jméno</strong>: ".$ticket['WooCommerceEventsAttendeeName'].<br />';
            echo '<strong>Příjmení</strong>: '.$ticket['WooCommerceEventsAttendeeLastName'].<br />';
            echo '<strong>E-mailová adresa</strong>: '.$ticket['WooCommerceEventsAttendeeEmail'].<br />';
            foreach ($ticket['WooCommerceEventsCustomAttendeeFields'] as $caf) {
                 echo $caf.'<br />';
            }
            echo "</p>";
        }
    }
}

Zobrazení vlastních polí pro účastníky se štítky v e-mailu správce nové objednávky #

Přidejte následující úryvek kódu do tématu. functions.php soubor. E-mail, který se zobrazí, můžete změnit pomocí jiného e-mailu. háček. Nezapomeňte nahradit "ovsxtmynwagotamjqieq" a "ruzwhgbuhzuzzdwnnaxe" v ukázkovém kódu svým vlastním kódem pole účastníka. Tyto informace najdete, pokud upravíte tip a vyhledáte jednotlivá vlastní pole účastníka v části "Vlastní pole". Každé vlastní pole účastníka a jeho popisek byste museli přidat jednotlivě.

.

[php]
add_action( 'woocommerce_email_customer_details', 'fooevents_display_attendee_details_in_new_order_email', 10 , 4);
function fooevents_display_attendee_details_in_new_order_email($order, $sent_to_admin, $plain_text, $email){
    echo "<h3>Podrobnosti o účastnících</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Jméno</strong>: ".$ticket['WooCommerceEventsAttendeeName'].<br />';
            echo '<strong>Příjmení</strong>: '.$ticket['WooCommerceEventsAttendeeLastName'].<br />';
            echo '<strong>E-mailová adresa</strong>: '.$ticket['WooCommerceEventsAttendeeEmail'].<br />';
            echo '<strong>Narozeniny</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ovsxtmynwagotamjqieq'].<br />';
            echo '<strong>Oblíbená píseň</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ruzwhgbuhzuzzdwnnaxe'].<br />';
            echo "</p>";
        }
    }
}

Zobrazení času začátku události v seznamu událostí #

Přidejte následující úryvek kódu do tématu. functions.php soubor. Stylujte zobrazení času přidáním CSS pro třídu 'fooevents-date'.

Změnit umístění času pomocí jiného háček.

.

[php]
funkce fooevents_display_time_in_shop_listing() {
global $post;
if (is_front_page() || is_home() || is_shop() || is_product_category() || is_product_tag()) {
echo '<div class="fooevents-date">';
echo get_post_meta($post-&gt;ID, 'WooCommerceEventsHour', true).':';
echo get_post_meta($post-&gt;ID, 'WooCommerceEventsMinutes', true). ' ';
echo get_post_meta($post-&gt;ID, 'WooCommerceEventsPeriod', true);
echo '</div>';
}
}
add_filter( 'woocommerce_after_shop_loop_item_title', 'fooevents_display_time_in_shop_listing', 35 );[/php]

Zobrazení registrovaných účastníků ve formátu tabulky #

Přidejte následující úryvek kódu do tématu. functions.php vypsat všechny registrované účastníky události ve formátu tabulkové mřížky. Po přidání úryvku kódu můžete zkrácený kód použít takto:

[fooevents_attendees]

zobrazit všechny účastníky všech událostí, nebo takto:

[fooevents_attendees product_id=123]

kde "123" je ID události, pro kterou chcete zobrazit seznam účastníků.

funkce fooevents_display_attendees($attributes) {
 
  $product_id='';
  if(!empty($attributes['product_id'])) {
    $product_id = $attributes['product_id'];
  }

  $output ='';
  $args = array(
    'numberposts' =&gt; -1,
    'posts_per_page' =&gt; -1,
    'post_type' =&gt; 'event_magic_tickets',
    'meta_query' =&gt; array(
      'relation' =&gt; 'OR',
      array(
        'key' =&gt; 'WooCommerceEventsProductID',
        'value' =&gt; $product_id,
        'compare' =&gt; 'LIKE'
      )
    )
  );

   $the_query = new WP_Query( $args );

  if( $the_query-&gt;have_posts() ):
    while ( $the_query-&gt;have_posts() ) : $the_query-&gt;the_post( );
    $postid = $the_query-&gt;post-&gt;ID;
     
      // vypsat všechna zjištění - PŘIZPŮSOBTE SI DLE SVÝCH PŘEDSTAV
      $output .= "<tr>";
      $output .= "<td>".get_the_title()."</td>";
      $output .= "<td>".get_post_meta($postid, 'WooCommerceEventsPurchaserFirstName', true)."</td>";
      $output .= "<td>".get_post_meta($postid, 'WooCommerceEventsPurchaserLastName', true)."</td>";
      $output .= "</tr>";
         
    endwhile;
  endif;
  wp_reset_query();
  $output ="<table>".$output."</table>";
  return $output;
   
}
add_shortcode("fooevents_attendees", "fooevents_display_attendees");
[/php]

Zobrazení data události před názvem na stránce produktu #

Změňte umístění data pomocí jiného symbolu. háček.

.

[php]
funkce fooevents_display_date_on_single() {
  global $post;
  $product = wc_get_product( $post-&gt;ID );
  $start_date = $product-&gt;get_meta( 'WooCommerceEventsDate' );
  $end_date = $product-&gt;get_meta( 'WooCommerceEventsEndDate' );
  if ( $end_date ) {
    printf(
      '<h3>%s</h3>',
      esc_html( $start_date . ' - ' . $end_date )
    );
  } else if( $start_date ) {
    printf(
      '<h3>%s</h3>',
      esc_html( $start_date )
    );
  }
}
add_action( 'woocommerce_single_product_summary', 'fooevents_display_date_on_single' );

Pokud chcete datum události zpřístupnit jako zkrácený kód, můžete pod funkci přidat následující řádek:

add_shortcode( 'fooevents_date_on_single', 'fooevents_display_date_on_single');

Pak můžete použít zkrácený kód [fooevents_date_on_single] zobrazit na stránce datum události.

Nahrazení ikony sedadla v tabulce míst jiným obrázkem. #

Upravte následující úryvek kódu CSS přidáním adresy URL jiného obrázku, kterým chcete nahradit výchozí obrázek sedadla pro všechna sedadla. Přidejte upravený úryvek kódu do vlastního souboru CSS vašeho tématu.

#fooevents_seating_dialog .fooevents_seating_chart_view_row span {
  background-image: url(../images/seat.svg);
}

Odstranění ikony sedadla v tabulce sedadel, aby se sedadla zobrazovala jako boxy. #

#fooevents_seating_dialog .fooevents_seating_chart_view_row span {
  background-image: none;
}

Změna směru číslování sedadel v zasedacím pořádku #

#fooevents_seating_dialog .fooevents_seating_chart_view_row {
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
}

Zobrazte lichá sedadla vpravo a sudá sedadla vlevo. #

#fooevents_seating_dialog .fooevents_seating_chart_view_row > span:nth-of-type(even) {
  float: left;
}

Zobrazení sedadel uprostřed zasedacího pořádku #

[css]
#fooevents_seating_dialog .fooevents_seating_chart_view_row_name,
#fooevents_seating_dialog .fooevents_seating_chart_view_row {
  text-align: center;
}
[/css]

Nechat zasedací pořádek rolovat vodorovně namísto zobrazení sedadel v další řadě. #

To by mohlo být užitečné, pokud máte mnoho sedadel v jedné řadě a chcete je zobrazit vedle sebe, nikoli v další řadě, pokud se nevejdou na jeden řádek.

#fooevents_seating_dialog .fooevents_seating_chart_view_row {
  overflow-x: scroll;
  white-space: nowrap;
}

Zobrazení mřížky kalendáře na stolních počítačích a seznamu kalendářních týdnů na mobilních zařízeních #

Přidejte dva zkratky kalendáře na stránku nebo příspěvek, kde chcete zobrazit kalendář. První zkratka zobrazí mřížku kalendáře a měla by vypadat takto:

[fooevents_calendar id="desktop"]

Druhý zkratkový kód zobrazí seznam kalendářních týdnů a měl by vypadat takto:

[fooevents_calendar id="mobile" defaultView="listWeek"]

Do vlastního souboru CSS vašeho motivu přidejte následující úryvek kódu CSS. Ujistěte se, že hodnota selektoru CSS ID je stejná jako hodnota atributu "id", kterou jste zadali v krátkém kódu. Vlastnost "max-width" můžete upravit podle velikosti obrazovky, na které se má zobrazit seznam týdnů kalendáře a mřížka kalendáře má být skrytá.

#desktop_fooevents_calendar {
  display: block;
}
    
#mobile_fooevents_calendar {
  display: none;
}
    
@media screen and (max-width: 600px) {
  #desktop_fooevents_calendar {
    display: none;
  }
    
  #mobile_fooevents_calendar {
    display: block;
  }    
}

Změna polohy ikony Kopírovat údaje o kupujícím #

Následující úryvek zarovná tlačítko kopírování napravo od štítku s prvním jménem:

.fooevents-copy-from-purchaser {
	float: vpravo;
	margin-bottom:-1.7em
}

Pokud nepoužíváte štítky, ale spíše zástupné znaky, použijte následující úryvek kódu:

.fooevents-copy-from-purchaser {
	float: vpravo;
	margin-top:-2em
}

Zobrazení karty "Podrobnosti o události" na stránce události jako první. #

Přidejte následující úryvek kódu do tématu. functions.php soubor.

add_filter( 'woocommerce_product_tabs', 'reorder_tabs', 98 );
function reorder_tabs( $tabs ) {

    $tabs['woocommerce_events']['priority'] = 1;
    return $tabs;

}

Přesměrování všech tlačítek "Přidat do košíku" na stránky produktu #

Pokud se jedná o jednoduchý produkt, tlačítko "Přidat do košíku" ve výchozím nastavení automaticky přidá produkt do košíku zákazníka. Při použití rozšíření FooEvents Rezervace můžete požadovat, aby zákazníci nejprve přešli na stránku produktu a vybrali datum a čas rezervace. Následující úryvek zajistí, že po kliknutí na tlačítko "Přidat do košíku" u jednoduchých produktů bude uživatel přesměrován na stránku produktu.

add_filter( 'woocommerce_loop_add_to_cart_link', 'fooevents_modify_add_to_cart_button_url', 10, 2 );
function fooevents_modify_add_to_cart_button_url( $button, $product ) {
    if (is_product_category() || is_shop()) {
        $button_text = $product-&gt;add_to_cart_text();
        $button_link = $product-&gt;get_permalink();
        $button = '<a class="button" href="/cs/' . $button_link . '/">' . $button_text . '</a>';
        return $button;
    }
}

Zobrazení FREE, pokud je cena události nastavena na nulu (0) #

Přidejte následující úryvek kódu do tématu. functions.php pokud chcete změnit události a produkty s cenou "0" na "ZDARMA". Slovo "ZDARMA" můžete také nahradit jiným slovem nebo frází nebo jej nechat prázdné, pokud nechcete, aby se nic zobrazovalo.

add_filter( 'woocommerce_get_price_html', 'wp_price_free_zero_empty', 100, 2 );
function wp_price_free_zero_empty( $price, $product ) {
	 if ( '' === $product->get_price() || 0 == $product->get_price() ) {
		$price = 'FREE';
	}
	return $price;
}

Zobrazení produktů a variant (vstupenek) ve formátu tabulky s mřížkou #

Přidejte následující úryvek kódu do tématu. functions.php aby se produkty a varianty na stránce události/produktu zobrazovaly ve formátu tabulky s mřížkou namísto výchozího rozevíracího seznamu. Každá varianta vstupenky bude uvedena v novém řádku a bude mít vlastní výběr množství.

Upozornění: Tento úryvek kódu je nekompatibilní se systémem FooEvents Sedadla a Zobrazení možností sezení na stránkách produktu možnost. Mělo by to fungovat u událostí s místem k sezení, pokud na stránce Pokladna zobrazíte pouze graf míst k sezení.

/** Add your event IDs in array like this
 * if you only want certain events
 * to display variations in a table: 
 * array( 123, 456 ) 
 */
$products              = array(  );
$products_multi_button = array(  );

/**
 * Add multiple variations with quantities at once in add to cart url using notation "<product_id or variation_id>:<product_quantity>,..."
 */
function fooevents_add_multiple_products_to_cart( $url = false ) {

    if ( ! empty( $_GET['add-to-cart'] ) ) {

        // Make sure WC is installed and add-to-cart query arg exists
        if ( ! class_exists( 'WC_Form_Handler' ) || empty( $_REQUEST['add-to-cart'] ) ) {
            return;
        }

        // Remove WooCommerce's hook since it doesn't handle multiple products/variations
        remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 );

        $product_ids = explode( ',', $_REQUEST['add-to-cart'] );
        $count       = count( $product_ids );
        $number      = 0;

        foreach ( $product_ids as $id_and_quantity ) {

            if ( ! empty( $_GET['fooevents_bookings_method'] ) ) {
                $_POST['fooevents_bookings_method'] = $_GET['fooevents_bookings_method'];
            } else {
                $_POST['fooevents_bookings_method'] = 'slotdate';
            }

            if ( ! empty( $_GET['bookings_sid'] ) ) {
                $_POST['fooevents_bookings_slot_val__trans'] = $_GET['bookings_sid'];
            }

            if ( ! empty( $_GET['bookings_did'] ) ) {
                $_POST['fooevents_bookings_date_val__trans'] = $_GET['bookings_did'];
            }

            if ( ! empty( $_GET['bookings_slot_date'] ) ) {
                $_POST['fooevents_bookings_slot_date_val_trans'] = $_GET['bookings_slot_date'];
            }

            // Check for quantities defined in notation (<product_id or variation_id>:<product_quantity>)

            $id_and_quantity = explode( ':', $id_and_quantity );
            $product_id      = $id_and_quantity[0];

            $_REQUEST['quantity'] = ! empty( $id_and_quantity[1] ) ? absint( $id_and_quantity[1] ) : 1;

            if ( ++$number === $count ) {
                // Send back to WooCommerce's add_to_cart_action method for handling.
                $_REQUEST['add-to-cart'] = $product_id;
                return WC_Form_Handler::add_to_cart_action( $url );
            }

            $product_id        = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $product_id ) );
            $was_added_to_cart = false;
            $adding_to_cart    = wc_get_product( $product_id );

            if ( ! $adding_to_cart ) {
                continue;
            }

            $add_to_cart_handler = apply_filters( 'woocommerce_add_to_cart_handler', $adding_to_cart->get_type(), $adding_to_cart );

            // Variable product handling
            if ( 'variable' === $add_to_cart_handler ) {
                fooevents_invoke_multiple_adds( 'WC_Form_Handler', 'add_to_cart_handler_variable', $product_id );

                // Grouped Products
            } elseif ( 'grouped' === $add_to_cart_handler ) {
                fooevents_invoke_multiple_adds( 'WC_Form_Handler', 'add_to_cart_handler_grouped', $product_id );

                // Custom Handler
            } elseif ( has_action( 'woocommerce_add_to_cart_handler_' . $add_to_cart_handler ) ) {
                do_action( 'woocommerce_add_to_cart_handler_' . $add_to_cart_handler, $url );

                // Simple Products
            } else {
                fooevents_invoke_multiple_adds( 'WC_Form_Handler', 'add_to_cart_handler_simple', $product_id );
            }
        }
    }
}

add_action( 'wp_loaded', 'fooevents_add_multiple_products_to_cart', 15 );

function fooevents_invoke_multiple_adds( $class_name, $methodName ) {
    if ( version_compare( phpversion(), '5.3', '<' ) ) {
        throw new Exception( 'PHP version does not support ReflectionClass::setAccessible()', __LINE__ );
    }

    $args = func_get_args();
    unset( $args[0], $args[1] );
    $reflection = new ReflectionClass( $class_name );
    $method     = $reflection->getMethod( $methodName );
    $method->setAccessible( true );

    $args = array_merge( array( $reflection ), $args );
    return call_user_func_array( array( $method, 'invoke' ), $args );
}




/**
 * Display variations in a table format.
 */

function woocommerce_variable_add_to_cart() {

    global $product, $post, $products, $products_multi_button;

    $woocommerce_events_type = get_post_meta( $post->ID, 'WooCommerceEventsType', true );

    // Comma separated list of product ID's that should display variations in table format. Leave empty to display all products ( e.g array() )

    if ( in_array( $post->ID, $products ) || empty( $products ) ) {

        // Set default in each input box to 0 instead of 1
        add_filter( 'woocommerce_quantity_input_args', 'fooevents_quantity_input_default', 10, 2 );

        $variations = find_valid_variations();

        // Check if the special 'price_grid' meta is set, if it is, load the default template.
        if ( get_post_meta( $post->ID, 'price_grid', true ) ) {

            // Enqueue variation scripts.
            wp_enqueue_script( 'wc-add-to-cart-variation' );

            // Load the template
            wc_get_template(
                'single-product/add-to-cart/variable.php',
                array(
                    'available_variations' => $product->get_available_variations(),
                    'attributes'           => $product->get_variation_attributes(),
                    'selected_attributes'  => $product->get_variation_default_attributes(),
                )
            );

            return;
        }

        // Custom template
        ?>
        <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20type%3D%22text%2Fjavascript%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20JavaScript%20to%20build%20add%20to%20cart%20link%20based%20on%20quantity%20inputs%20and%20booking%20slots%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20is_bookable%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20jQuery(document).ready(function%20()%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20link_original%20%3D%20jQuery(%22%23add_to_cart_link%22).attr('data-href')%20%2B%20%22%3Fadd-to-cart%3D%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20link%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Check%20if%20booking%20slots%20should%20show%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%20jQuery(%20%22%23fooevents_bookings_slot_val__trans%22%20).length%20%7C%7C%20jQuery(%22%23fooevents_bookings_slot_date_val_trans%22).length%20)%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20booking_settings_link%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20bookings_sid%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20bookings_did%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20bookings_method%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20bookings_slot_date%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20is_bookable%20%3D%20true%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bookings_sid%20%3D%20jQuery(%22%23fooevents_bookings_slot_val__trans%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bookings_did%20%3D%20jQuery(%22%23fooevents_bookings_date_val__trans%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bookings_method%20%3D%20jQuery(%22%23fooevents_bookings_method%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bookings_slot_date%20%3D%20jQuery(%22%23fooevents_bookings_slot_date_val_trans%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23fooevents_bookings_slot_val__trans%22).change(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bookings_sid%20%3D%20jQuery(%22%23fooevents_bookings_slot_val__trans%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20updateLink(link%2Cbookings_sid%2Cbookings_did%2Cbookings_method%2Cbookings_slot_date)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23fooevents_bookings_date_val__trans%22).change(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bookings_did%20%3D%20jQuery(%22%23fooevents_bookings_date_val__trans%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20updateLink(link%2Cbookings_sid%2Cbookings_did%2Cbookings_method%2Cbookings_slot_date)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23fooevents_bookings_slot_date_val_trans%22).change(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bookings_slot_date%20%3D%20jQuery(%22%23fooevents_bookings_slot_date_val_trans%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20updateLink(link%2Cbookings_sid%2Cbookings_did%2Cbookings_method%2Cbookings_slot_date)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22.quantity%20input%22).change(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link%20%3D%20link_original%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20no_quantity%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22.variations%20tr%22).each(function()%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20var_id%20%3D%20jQuery(this).find(%22input%5Bname%3Dvariation_id%5D%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20total%20%3D%20jQuery(this).find(%22.quantity%20input%22).val()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(total%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20no_quantity%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link%20%2B%3D%20var_id%20%2B%20%22%3A%22%20%2B%20total%20%2B%20%22%2C%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(no_quantity%20%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).removeAttr('href')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20updateLink(link%2Cbookings_sid%2Cbookings_did%2Cbookings_method%2Cbookings_slot_date)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20function%20updateLink(link%2Cbookings_sid%3D%22%22%2Cbookings_did%3D%22%22%2Cbookings_method%3D%22%22%2Cbookings_slot_date%3D%22%22)%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(is_bookable)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(bookings_sid%20!%3D%20%22%22%20%26%26%20bookings_did%20!%3D%20%22%22%20%26%26%20bookings_sid%20!%3D%20undefined%20%26%26%20bookings_did%20!%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).attr('data-href'%2C%20link.slice(0%2C-1)%20%2B%20%22%26bookings_sid%3D%22%20%2B%20bookings_sid%20%2B%20%22%26bookings_did%3D%22%20%2B%20bookings_did%20%2B%20%22%26fooevents_bookings_method%3D%22%20%2B%20bookings_method)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).attr('href'%2C%20jQuery(%22%23add_to_cart_link%22).attr('data-href'))%3B%09%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(bookings_slot_date%20!%3D%20%22%22%20%26%26%20bookings_slot_date%20!%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).attr('data-href'%2C%20link.slice(0%2C-1)%20%2B%20%22%26fooevents_bookings_method%3D%22%20%2B%20bookings_method%20%2B%20%22%26bookings_slot_date%3D%22%20%2B%20bookings_slot_date)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).attr('href'%2C%20jQuery(%22%23add_to_cart_link%22).attr('data-href'))%3B%09%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).attr('data-href'%2C%20link.slice(0%2C-1))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).attr('data-href'%2C%20link.slice(0%2C-1))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(%22%23add_to_cart_link%22).attr('href'%2C%20jQuery(%22%23add_to_cart_link%22).attr('data-href'))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
        <form class="cart"  action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'>
            <table class="variations variations-grid" cellspacing="0">
                <tbody>

            <?php
            $variation = 0;
            foreach ( $variations as $key => $value ) {
                if ( ! $value['variation_is_visible'] ) {
                    continue;
                }
                if ( $variation != $value['variation_id'] ) {

                    if ( in_array( $post->ID, $products_multi_button ) ) {

                        ?>

                    <tr>
                        <td>
                        <?php

                        foreach ( $value['attributes'] as $key => $val ) {
                            $val = str_replace( array( '-', '_' ), ' ', $val );
                            printf( '<div class="attr attr-%s">%s</div>', $key, ucwords( $val ) );
                        }
                        ?>
                        </td>
                        <td>
                        <?php echo $value['price_html']; ?>
                        </td>
 
                        <?php if ( $value['is_in_stock'] ) { ?>
                            <form class="cart"  action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'>
                                <td id="variation_<?php echo $value['variation_id']; ?>">
                                    <?php woocommerce_quantity_input(); ?>
                                    <?php
                                    $variation_minimum_quantity  = get_post_meta( $value['variation_id'], 'variation_minimum_allowed_quantity', true );
                                    $variation_maximum_quantity  = get_post_meta( $value['variation_id'], 'variation_maximum_allowed_quantity', true );
                                    $variation_group_of_quantity = get_post_meta( $value['variation_id'], 'variation_group_of_quantity', true );
                                    ?>
                                    <?php if ( isset( $variation_group_of_quantity ) ) { ?>
                                        <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0A%09%09%09%09%09%09%09%09%09%09jQuery(document).ready(function(%24)%7B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22step%22%2C%20%3C%3Fphp%20echo%20%24variation_group_of_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22value%22%2C%20%3C%3Fphp%20echo%20%24variation_group_of_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22min%22%2C%20%3C%3Fphp%20echo%20%24variation_minimum_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22max%22%2C%20%3C%3Fphp%20echo%20%24variation_maximum_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%7D)%3B%0A%09%09%09%09%09%09%09%09%09%09%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />                                  
                                    <?php } ?>
                                </td>
                                <td>
                                    <?php
                                    if ( ! empty( $value['attributes'] ) ) {
                                        foreach ( $value['attributes'] as $attr_key => $attr_value ) {
                                            ?>
                                            <input type="hidden" name="<?php echo $attr_key; ?>" value="<?php echo $attr_value; ?>">
                                            <?php
                                        }
                                    }
                                    ?>
                                    <button type="submit" class="single_add_to_cart_button btn btn-primary"><span class="glyphicon glyphicon-tag"></span> Add to cart</button>
                                </td>
                                <input type="hidden" name="variation_id" value="<?php echo $value['variation_id']; ?>" />
                                <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
                                <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
                            </form>
                            <?php } else { ?>
                                <td colspan="2">
                                    <p class="stock out-of-stock"><?php _e( 'This item is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
                                </td>
                            <?php } ?>
                    </tr>
                  
                        <?php
                    } else {
                        ?>


                    
                    <tr>
                        <td style="display:table-cell">
                        <?php

                        foreach ( $value['attributes'] as $key => $val ) {
                            $val = str_replace( array( '-', '_' ), ' ', $val );
                            printf( '<div class="attr attr-%s">%s</div>', $key, ucwords( $val ) );
                        }
                        ?>
                        </td>
                        <td style="display:table-cell">
                        <?php echo $value['price_html']; ?>
                        </td>

                        <?php if ( $value['is_in_stock'] ) { ?>

                                <td id="variation_<?php echo $value['variation_id']; ?>" style="display:table-cell">
                                    <?php woocommerce_quantity_input(); ?>
                                    <?php
                                    $variation_minimum_quantity  = get_post_meta( $value['variation_id'], 'variation_minimum_allowed_quantity', true );
                                    $variation_maximum_quantity  = get_post_meta( $value['variation_id'], 'variation_maximum_allowed_quantity', true );
                                    $variation_group_of_quantity = get_post_meta( $value['variation_id'], 'variation_group_of_quantity', true );
                                    ?>
                                    <?php if ( isset( $variation_group_of_quantity ) ) { ?>
                                        <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0A%09%09%09%09%09%09%09%09%09%09jQuery(document).ready(function(%24)%7B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22step%22%2C%20%3C%3Fphp%20echo%20%24variation_group_of_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22value%22%2C%20%3C%3Fphp%20echo%20%24variation_group_of_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22min%22%2C%20%3C%3Fphp%20echo%20%24variation_minimum_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22max%22%2C%20%3C%3Fphp%20echo%20%24variation_maximum_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%7D)%3B%0A%09%09%09%09%09%09%09%09%09%09%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
                                    <?php } ?>
                                </td>
                                <td style="display:table-cell">
                                    <?php
                                    if ( ! empty( $value['attributes'] ) ) {
                                        foreach ( $value['attributes'] as $attr_key => $attr_value ) {
                                            ?>
                                            <input type="hidden" name="<?php echo $attr_key; ?>" value="<?php echo $attr_value; ?>">
                                            <?php
                                        }
                                    }
                                    ?>

                                </td>
                                <input type="hidden" name="variation_id" value="<?php echo $value['variation_id']; ?>" />
                                <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
                                <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
                            </form>
                            <?php } else { ?>
                                <td colspan="2" style="display:table-cell">
                                    <p class="stock out-of-stock"><?php _e( 'This item is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
                                </td>
                            <?php } ?>
                    </tr>
                                                <?php } ?>
                    <?php
                    $variation = $value['variation_id'];
                }
            }
            ?>
        
        </tbody>
        
            </table> 
            <?php
            if ( ! in_array( $post->ID, $products_multi_button ) ) {
                ?>
                <?php do_action( 'fooevents_output_booking_details' ); ?>
            <p class="form-row">
            <a id="add_to_cart_link" data-href="<?php echo esc_url( $product->add_to_cart_url() ); ?>" type="submit" class="single_add_to_cart_button btn btn-primary button alt wp-element-button"><span class="glyphicon glyphicon-tag"></span> Add to cart</a>
            </p>
            <?php } ?>
            </form>

        <?php
    } else {

        // Enqueue variation scripts.
        wp_enqueue_script( 'wc-add-to-cart-variation' );

        // Get Available variations?
        $get_variations = count( $product->get_children() ) <= apply_filters( 'woocommerce_ajax_variation_threshold', 30, $product );

        // Load the template.
        wc_get_template(
            'single-product/add-to-cart/variable.php',
            array(
                'available_variations' => $get_variations ? $product->get_available_variations() : false,
                'attributes'           => $product->get_variation_attributes(),
                'selected_attributes'  => $product->get_default_attributes(),
            )
        );

    }
}

function find_valid_variations() {
    global $product, $post;

    $variations   = $product->get_available_variations();
    $attributes   = $product->get_attributes();
    $new_variants = array();

    // Loop through all variations
    foreach ( $variations as $variation ) {

        // Peruse the attributes.

        // 1. If both are explicitly set, this is a valid variation
        // 2. If one is not set, that means any, and we must 'create' the rest.

        $valid = true; // so far
        foreach ( $attributes as $slug => $args ) {
            if ( array_key_exists( "attribute_$slug", $variation['attributes'] ) && ! empty( $variation['attributes'][ "attribute_$slug" ] ) ) {
                // Exists

            } else {
                // Not exists, create
                $valid = false; // it contains 'anys'
                // loop through all options for the 'ANY' attribute, and add each
                foreach ( explode( '|', $attributes[ $slug ]['value'] ) as $attribute ) {
                    $attribute                                      = trim( $attribute );
                    $new_variant                                    = $variation;
                    $new_variant['attributes'][ "attribute_$slug" ] = $attribute;
                    $new_variants[]                                 = $new_variant;
                }
            }
        }

        // This contains ALL set attributes, and is itself a 'valid' variation.
        if ( $valid ) {

            $new_variants[] = $variation;
        }
    }

    return $new_variants;
}

function fooevents_quantity_input_default( $args, $product ) {
    $args['input_value'] = 0;
    return $args;
}


/**
 * Adds booking slot dropdowns only to single product page if the event is "Bookable"
 */
function fooevents_add_booking_slots() {
    global $post, $products;
    $wc_product              = wc_get_product( $post->ID );
    $woocommerce_events_type = get_post_meta( $post->ID, 'WooCommerceEventsType', true );

    if ( is_plugin_active( 'fooevents_bookings/fooevents-bookings.php' ) || is_plugin_active_for_network( 'fooevents_bookings/fooevents-bookings.php' ) ) {

        if ( is_product() && $woocommerce_events_type == 'bookings' && ( in_array( $post->ID, $products ) || empty( $products ) ) && $wc_product->is_type( 'variable' ) ) {
            $fooevents_bookings = new Fooevents_Bookings();
            add_action( 'fooevents_output_booking_details', array( $fooevents_bookings, 'output_booking_fields_product' ) );
        }
    }
}
add_action( 'wp', 'fooevents_add_booking_slots' );

Přidání podpory pro denní časy začátku a konce do témat tipů #

Od verze 1.5.5 o FooEvents Vícedenní můžete vybrat různé časy začátku a konce pro každý den. vícedenní akce. Podpora této funkce byla také přidána do všech FooEvents Motivy vstupenek. Prosím, postupujte podle těchto pokynů aktualizovat stávající téma tipu. Pokud používáte vlastní motiv tipu a nemůžete ho nahradit aktualizovanou verzí, přidejte do motivu tipu následující úryvek kódu, abyste přidali podporu pro časy začátku a konce. [php]

<!-- MULTI-DAY DETAILS -->
										

			<strong><?php printf( __( '%1$s %2$d: ', 'woocommerce-events' ), $ticket['dayTerm'], $x ); ?></strong>
			<?php echo esc_attr( $date ); ?><br /> 
				
		<br />

Výchozí tlačítka WooCommerce Přidat do košíku zobrazená na stránkách výpisu obchodu automaticky přidají produkt do košíku a přesměrují na stránku košíku. Při použití FooEvents Rezervace můžete raději uživatele nasměrovat přes stránku produktu, aby mohl nejprve provést výběr slotu a času rezervace a teprve poté přejít na stránku košíku. Následující úryvek nahradí odkaz na přidání do košíku odkazem na stránku produktu. Tím se zajistí, že uživatel bude moci provést příslušný výběr rezervace na stránce produktu, než přejde na stránku košíku nebo pokladny.

/**
* @snippet Změnit tlačítko WooCommerce 'Přidat do košíku' na 'Zobrazit produkt'
* @source https://www.wptechnic.com/?p=4615
* @autor Muhammad Tamzid
* @compatible WC 4.3.1
*/
// Změna tlačítka WooCommerce "Přidat do košíku" na "Zobrazit produkt
add_filter( 'woocommerce_loop_add_to_cart_link', 'wpt_custom_view_product_button', 10, 2 );
function wpt_custom_view_product_button( $button, $product ) {
    // Ignorovat u proměnných produktů
    if ( $product-&gt;is_type( 'variable' ) ) {
        return $button;
    }
    // Text tlačítka zde
    $button_text = __( 'Book Ticket', 'woocommerce' );
    return '<a class="button wpt-custom-view-product-button" href="/cs/' . $product->get_permalink() . '/">' . $button_text . '</a>';
}

Zobrazení data události pro "jednotlivé" události v košíku a na stránce Pokladna #

add_filter( 'woocommerce_cart_item_name', 'add_event_date_cart_checkout', 10, 3 );
function add_event_date_cart_checkout( $product_name, $cart_item, $cart_item_key ) {
	$product = $cart_item['data'];

	if ( $value = $product->get_meta( 'WooCommerceEventsDate' ) ) {
		$product_name .= '' . $value . '';
	}
	return $product_name;
}

Články

Štítky , , , , , , , , , , , , , , , , , , ,