/**
* Trim content on archive pages.
*
* @param string $content
* @return string
*/
function trim_content_on_archive($content)
{
// If we're on archive page, modify content.
if (is_archive())
{
// Strip all HTML tags so they don't break your layout.
$content = strip_tags($content);
// Trim content to 200 characters but make sure the words aren't chopped.
$content = preg_replace('/\s+?(\S+)?$/', '', substr($content, 0, 201));
// Append ellipsis to the end of the string.
$content .= ' ...';
}
// Return the (optionally modified) content from the filter.
return $content;
}
add_filter('the_content', 'trim_content_on_archive');
function university_adjust_queries($query){
if ( ! is_admin() && is_post_type_archive( 'event' ) && $query->is_main_query() ) {
$query->set( 'meta_key', 'event_date' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'ASC');
$query->set( 'meta_query', array(
array(
'key' => 'event_date',
'compare' => '>=',
'value' => date('Ymd'),
'type' => 'numeric',
)
) );
}
}
add_action( 'pre_get_posts', 'university_adjust_queries' );
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (7)
) AND (
wp_postmeta.meta_key = 'start_date'
) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'tribe-ea-success' OR wp_posts.post_status = 'tribe-ea-failed' OR wp_posts.post_status = 'tribe-ea-schedule' OR wp_posts.post_status = 'tribe-ea-pending' OR wp_posts.post_status = 'tribe-ea-draft' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0 ASC LIMIT 0, 10
Это не баг, это фича. Мы вырезаем специально ВСЕ HTML теги, с помощью
$content = strip_tags($content);
Зачем это делается? Потому что есть вероятность, что строка будет обрезана посередине тега, например в первые 200 символов попадет
<a href="https://some.url/
, а закрывающая часть">
будет обрезана, потому что достигнут лимит в 200 символов. И все, с этого места и до конца страницы у вас одна большая сломанная ссылка. Чтобы этого не произошло, теги вырезаются.Собственно, в этом ответе я продемонстрировал эту проблему - вот как выглядит мой ответ если не оборачивать эти фрагменты ссылки в тег code:
1. В регулярках ничего не зашифровывается
2. Там нет никакого any
3. Что делает данная регулярка: