2016-07-02 8 views
4

Ich benutze den folgenden Code auf meiner WordPress-Website, um meine Beschreibung Auszug auf WooCommerce zu verkürzen und es funktioniert gut, wenn ich meine Zeichen für 14 oder weniger eingeben. Sobald ich mehr als 14 Zeichen eingegeben habe, wird die vollständige Kurzbeschreibung angezeigt.Limit WooCommerce Produktbeschreibung Länge

add_action('woocommerce_after_shop_loop_item_title', 'lk_woocommerce_product_excerpt', 35, 2); 
if (!function_exists('lk_woocommerce_product_excerpt')) 
{ 
    function lk_woocommerce_product_excerpt() 
    { 
     $content_length = 14; 
     global $post; 
     $content = $post->post_excerpt; 
     $wordarray = explode(' ', $content, $content_length + 1); 
     if(count($wordarray) > $content_length) : 
      array_pop($wordarray); 
      array_push($wordarray, '...'); 
      $content = implode(' ', $wordarray); 
      $content = force_balance_tags($content); 
      $content = substr($content, 0, 14); 

     endif; 
     echo "<span class='excerpt'><p>$content...</p></span>"; 
    } 
} 

Jede Hilfe wäre willkommen.

Vielen Dank.

Antwort

2

- - (aktualisiert) - -

Ihr Code Buchstaben mit weißen Räumen zählt, statt der Code unten ist also ohne Leerräume zu zählen. Bitte See this live php file in action(hier das Ergebnis Ihres Codes auf eine Zeichenfolge mit 25 Wörtern und mir auch). Dann funktioniert dieser Code korrekt, wie Sie wollen:

add_action('woocommerce_after_shop_loop_item_title', 'lk_woocommerce_product_excerpt', 35, 2); 
if (!function_exists('lk_woocommerce_product_excerpt')) 
{ 
    function lk_woocommerce_product_excerpt() 
    { 
     global $post; 
     $limit = 14; 
     $text = $post->post_excerpt; 
     if (str_word_count($text, 0) > $limit) { 
      $arr = str_word_count($text, 2); 
      $pos = array_keys($arr); 
      $text = substr($text, 0, $pos[$limit]) . '...'; 
      // $text = force_balance_tags($text); // may be you dont need this… 
     } 
     echo '<span class="excerpt"><p>' . $text . '</p></span>'; 
    } 
} 

Oder können Sie die Funktion aus dem Thread unten verwenden, mit Ihnen auf diese Weise:

if (!function_exists('lk_limit_text')) 
{ 
    function lk_limit_text($text, $limit) { 
     if (str_word_count($text, 0) > $limit) { 
      $words = str_word_count($text, 2); 
      $pos = array_keys($words); 
      $text = substr($text, 0, $pos[$limit]) . '...'; 
     } 
     return $text; 
    } 
} 

add_action('woocommerce_after_shop_loop_item_title', 'lk_woocommerce_product_excerpt', 35, 2); 
if (!function_exists('lk_woocommerce_product_excerpt')) 
{ 
    function lk_woocommerce_product_excerpt() 
    { 
     global $post; 
     $content = $post->post_excerpt; 
     // $content = force_balance_tags($content); // may be you dont need this… 
     echo '<span class="excerpt"><p>' . lk_limit_text($content, 14) . '</p></span>'; 
    } 
} 

Diese Arbeit sollte ...

Dieser Code basiert auf diesem Thema: How can I truncate a string to the first 20 words in PHP?

+0

Danke für den Code LoicTheAztec! Leider funktioniert das überhaupt nicht, um die Beschreibungslänge zu verkürzen. Hast du noch andere Ideen, warum der ursprüngliche Code nicht über 14 Zeichen hinaus funktioniert? Ich habe es mit verschiedenen WordPress-Themes versucht, aber das machte keinen Unterschied. – user3612498

+0

Aus irgendeinem Grund dachte ich, dass der ursprüngliche Code Zeichen und keine Wörter zählt. So funktioniert es! Ich danke dir sehr! – user3612498

+0

Nur eine kurze Follow-up-Frage. Gibt es eine einfache Möglichkeit, den Code zu ändern, so dass er die vollständige Beschreibung von WooCommerce statt der kurzen verwendet? – user3612498

0

Sie können WooCommerce Produktbezeichnung einschränken ription

Verwendung dieser Code -

add_filter('woocommerce_short_description', 'limit_product_short_description', 10, 1); 

function limit_product_short_description($post_excerpt) 
{ 
    if (!is_product()) 
    { 
     $pieces = explode(" ", $post_excerpt); 
     $post_excerpt = implode(" ", array_splice($pieces, 0, 14)); 
    } 
    return $post_excerpt; 
} 

explodieren bricht die ursprüngliche Zeichenfolge in ein Array von Wörtern, array_splice können Sie bestimmte Bereiche von diesen Worten, und dann implodieren verbindet die Bereiche wieder zusammen in einzelne Saiten.

Verwenden Sie diesen Code zu ändern Limit auf der Shop-Seite nicht Produkt-detaillierte Seite.

Wenn Sie auf beiden Seiten ändern möchten, entfernen Sie if (!is_product()) Zustand.

Verwandte Themen