Ограничение длины описания продукта WooCommerce

Я использую следующий код на моем сайте WordPress, чтобы сократить фрагмент описания в WooCommerce, и он отлично работает, если я вводил свои символы в течение 14 или менее. Как только я вводим более 14 символов, он показывает полное краткое описание.

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>"; } } 

Любая помощь будет оценена по достоинству.

Спасибо.

– – (Обновлено) – –

Ваш код подсчитывает буквы с пробелами, вместо этого код, приведенный ниже, обозначает слова без пробелов. Посмотрите этот живой файл php в действии (здесь результат вашего кода на строку, содержащую 25 слов и мою тоже) . Затем этот код работает правильно, как вы пожелаете:

 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>'; } } 

Или вы можете использовать функцию из потока ниже, следующим образом:

 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>'; } } 

Это должно работать …

Этот код основан на этом потоке: как я могу усечь строку до первых 20 слов в PHP?

Вы можете ограничить описание продукта WooCommerce

используйте этот код –

 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; } 

explode разбивает исходную строку на массив слов, array_splice позволяет вам получить определенные диапазоны этих слов, а затем implode объединяет диапазоны обратно в одну строку.

Используйте этот код, чтобы изменить лимит на странице магазина, а не на странице продукта .

Если вы хотите изменить на обеих страницах, удалите if (!is_product()) .