Здравствуйте! На главной странице сайта информация, опубликованная в произвольных полях идет подряд без пробелов, например: "Область: 18 Удмуртская РеспубликаАдрес: Ижевск" Смотрится не красиво. Можно ли в следующих обновлениях сделать эти пробелы или их можно как-то настроить? Адрес:
Благодарю, но эти варианты не подходят. Необходимо, чтобы дополнительные поля отображались в сокращенном варианте записи на главной странице. Просто необходимо, чтобы между ними был пробел. Если эти поля создаются через плагин WP-Recall, то вероятнее всего и пробелы можно предусмотреть либо в самом плагине, либо в дополнении.
gunata сказал(а)
пробелы можно предусмотреть либо в самом плагине, либо в дополнении
никакие пробелы предусмотреть нельзя, поля выводятся с учетом того, что они будут обрамлены html-тегами, за счет них осуществляется расположение полей на разных строках, при формировании краткой записи все html-теги обрезаются, поэтому они лепятся в одну строку, что неудивительно. Я дал вам вариант решения, который должен вам подойти, но как понял вы даже не пытались копать в этом направлении.
Мои раскопки в этом направлении привели меня сюда:
Получается, что если я внесу изменения в файл темы, то они будут теряться при каждом обновлении. в статье по этому поводу говориться:
"В файле functions.php вашей темы или любом файле используйте файл функций. Просто помните, когда вы это делаете, если тема не ваша, все изменения будут потеряны при обновлении темы
Лучшим способом было бы использовать код в дочерней теме. Как и выше, в файле functions.php или связанных с функциями
Используйте код в плагине. Это предпочтительный способ, поскольку это делает код доступным для всех тем. Если вы переключаете темы, вам не нужно беспокоиться о переписывании одного и того же кода."
т.е. предлагают изменения в плагине. Если это проблематично, то может тогда в дочерней теме, которая у меня и стоит: Hueman Child WP-Recall. но, опять же, если эти изменения внесу я, то они будут теряться при обновлении дочерней темы.
Задачу удалось решить при помощи статьи, на которую давала ссылку ранее.
в файл wp-includes / formatting.php после строки return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt );
внесла следующий код:
3343 remove_filter('get_the_excerpt', 'wp_trim_excerpt'); 3344 add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt'); 3346 function wpse_allowedtags() { // Add custom tags to this string return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>,<p>,<img>,<video>,<audio>'; } if ( ! function_exists( 'wpse_custom_wp_trim_excerpt' ) ) : function wpse_custom_wp_trim_excerpt($wpse_excerpt) { $raw_excerpt = $wpse_excerpt; if ( '' == $wpse_excerpt ) { $wpse_excerpt = get_the_content(''); $wpse_excerpt = strip_shortcodes( $wpse_excerpt ); $wpse_excerpt = apply_filters('the_content', $wpse_excerpt); $wpse_excerpt = str_replace(']]>', ']]>', $wpse_excerpt); $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); /*IF you need to allow just certain tags. Delete if all tags are allowed */ //Set the excerpt word count and only break after sentence is complete. $excerpt_word_count = 75; $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); $tokens = array(); $excerptOutput = ''; $count = 0; // Divide the string into tokens; HTML tags, or words, followed by any whitespace preg_match_all('/(<[^>]+>|[^<>s]+)s*/u', $wpse_excerpt, $tokens); foreach ($tokens[0] as $token) { if ($count >= $excerpt_length && preg_match('/[,;?.!]s*$/uS', $token)) { // Limit reached, continue until , ; ? . or ! occur at the end $excerptOutput .= trim($token); break; } // Add words to complete sentence $count++; // Append what's left of the token $excerptOutput .= $token; } $wpse_excerpt = trim(force_balance_tags($excerptOutput)); $excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . ' » ' . sprintf(__( 'Read more about: %s »', 'wpse' ), get_the_title()) . '</a>'; $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); //$pos = strrpos($wpse_excerpt, '</'); //if ($pos !== false) // Inside last HTML tag //$wpse_excerpt = substr_replace($wpse_excerpt, $excerpt_end, $pos, 0); /* Add read more next to last word */ //else // After the content $wpse_excerpt .= $excerpt_more; /*Add read more in new paragraph */ return $wpse_excerpt; } return apply_filters('wpse_custom_wp_trim_excerpt', $wpse_excerpt, $raw_excerpt); } endif; remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt');
теперь всё красиво отображается и как надо.
Хотя, после обновлений скорее всего, опять придётся редактировать. Поэтому автор и предлагает внести эти изменения в дочернюю тему или в плагин.
Надеюсь, что Андрей всё-таки внесет в будущем эти изменения либо в плагин, либо в дочернюю тему.
Благодарю за помощь и желаю дальнейших творческих успехов.
в файл wp-includes / formatting.php
- это очень-очень плохо. Ядро вордпресса хакать нельзя. Потом удивляются когда неожиданно несвязанные проблемы появляются или вирусы...
gunata сказал(а)
Надеюсь, что Андрей всё-таки внесет в будущем эти изменения либо в плагин, либо в дочернюю тему.
- в плагин точно нет. Он не занимается выводом контента из записей.
Ну, извините. Я вообще не любитель лезть в какой-либо код. Но придётся пока оставить так.
Надеюсь, что такой классный функционал, как произвольные поля, будет когда-нибудь отображаться без косяков везде, а не только на одиночных записях. Думаю, что Андрей, как специалист, найдёт нужное решение, тогда и вордпресс хакать не придётся.
Сообщите, когда это произойдет и я с удовольствием перейду на Ваш вариант.
У вас очень хороший продукт, но нет предела совершенству. А обратная связь от клиентов помогает его развитию.