Fany_VanDaal

Zobrazení produktů se stejným tagem

Feb 8th, 2020 (edited)
421
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.46 KB | None
  1. // pro zobrazení použijte shortcode [woo_products_by_tags]
  2. // můžete použít doplňující info v shortcode [woo_products_by_tags image_size="shop_thumbnail" title="Další varianty"]
  3.  
  4. function woo_products_by_tags_shortcode( $atts, $content = null ) {
  5.     extract(shortcode_atts(array(
  6.         "image_size"       => 'thumbnail',  // zde si nastavte, jaký obrázek se má zobrazit, pokud nemáte nastavenou velikost v shortcode
  7.         "title" => 'Další barevné varianty obrazu'  // nadpis, který se zobrazí nad sekcí, pokud jsou nalezeny další varianty, pokud jej nemáte nastaven v shortcode
  8.     ), $atts));
  9.     ob_start();
  10.     $current_post_ID = get_the_ID();
  11.     // Define Query Arguments
  12.     $args = array(
  13.                 'post_type'      => 'product',
  14.                 'posts_per_page' => 10,   // počet produktů na řádek (vždy se zobrazí jeden řádek i kdyby bylo nalezeno více produktů)
  15.                 'product_tag'    => get_product_tags( $current_post_ID )
  16.                 );
  17.     // Create the new query
  18.     $loop = new WP_Query( $args );
  19.     // Get products number
  20.     $product_count = $loop->post_count;
  21.     // If results
  22.     if ( $product_count > 1 ) {
  23.         echo '<h3 class="odstup-nadpisu">'.$title.'</h3>';
  24.         echo '<ul class="products">';
  25.             // Start the loop
  26.             while ( $loop->have_posts() ) : $loop->the_post(); global $product;
  27.                 global $post;
  28.                 if($post->ID !== $current_post_ID) {
  29.                     if (has_post_thumbnail( $loop->post->ID )) {
  30.                         echo '<div class="zoom-obrazku"><a href="'.get_permalink($post->ID).'">';
  31.                         echo  get_the_post_thumbnail($loop->post->ID, $image_size, [ 'alt' => esc_html ( get_the_title() ) ]);
  32.                         echo '</a></div>';
  33.                     }  
  34.                 }
  35.             endwhile;
  36.         echo '</ul><!--/.products-->';
  37.     }
  38.     return ob_get_clean();
  39. }
  40. function get_product_tags( $id ) {
  41.     $output = array();
  42.     $terms  = get_the_terms( $id, 'product_tag' );
  43.     if ( $terms !== false ) {
  44.         foreach ( $terms as &$term ) {
  45.             $output[] = $term->name;
  46.         }
  47.         return implode( ',', $output );
  48.     }
  49.     return $output;
  50. }
  51. add_shortcode("woo_products_by_tags", "woo_products_by_tags_shortcode");
  52.  
  53. // bonus
  54. /*
  55. .odstup-nadpisu {
  56.     padding-bottom: 30px;
  57.     text-align: center;
  58. }
  59.  
  60. .zoom-obrazku {
  61.   padding-bottom: 0px;
  62.   transition: transform 0.5s; // časová délka animace - tuto poznámku odstraňte!
  63.   width: 150px;
  64.   height: 150px;
  65.   margin: 0 auto;
  66.   display: inline-block;
  67. }
  68.  
  69. .zoom-obrazku:hover {
  70.   transform: scale(1.1); // 110% zoom - pokud chcete obrázek zvětšit třeba na 150% zadejte 1.5)  - tuto poznámku odstraňte!
  71. }
  72. */
RAW Paste Data Copied