Intereting Posts
Показывать галерею внизу после содержимого Как подключиться после отправки электронной почты пользователя? SEO – два веб-сайта WordPress на одном доменном имени Фрагменты: лучше ли добавлять их в functions.php или создавать плагины для сайта? Как удалить текст «wordpress …» из заголовков страниц в закладках Загрузка внешних файлов jQuery с помощью $ Используйте SCSSPHP для компиляции значений параметра Customizer в файлы .SCSS, готовые для компиляции в CSS. Создание виджета администратора для /wp-admin/post.php? Страница поиска перенаправляется на 404 Пользовательское пространство имен API и конечные точки реагируют с ошибками 404 и 503 Настроить функции для переопределения без использования функции function_exists () путем их короткого замыкания? Возникли проблемы с параметрами настроек как массив в pre_get_posts Обновление системы WordPress Добавление количества символов и ограничений в комментариях, изменение меток и полей – jetpack Ограничение количества страниц, которые пользователи могут создавать в пользовательских типах сообщений

Показать дополнительную ссылку рядом с последним словом

У меня есть эта функция выдержки

<?php function pietergoosen_get_the_content_limit_custom_allowedtags() { // Add custom tags to this string return '<head>,<title>,<base>,<link>,<meta>,<style>,<script>,<noscript>,<body>,<section>,<nav>, <article>,<aside>,<h1>,<h2>,<h3>,<h4>,<h5>,<h6>,<header>,<footer>,<address>,<main>,<p>,<hr>, <pre>,<blockquote>,<ol>,<ul>,<li>,<dl>,<dt>,<dd>,<figure>,<figcaption>,<div>,<a>,<em>,<strong>, <small>,<s>,<cite>,<q>,<dfn>,<abbr>,<data>,<time>,<code>,<var>,<samp>,<kbd>,<sub>,<sup>,<i>,<b>, <u>,<mark>,<ruby>,<rt>,<rp>,<bdi>,<bdo>,<span>,<br>,<wbr>,<ins>,<del>,<img>,<iframe>,<embed>, <object>,<param>,<video> ,<audio>,<source>,<track>,<canvas>,<map>,<area>,<svg>,<math>,<table>, <caption>,<colgroup>,<col>,<tbody>,<thead>,<tfoot>,<tr>,<td>,<th>,<form>,<fieldset>,<legend>,<label>, <input>,<button>,<select>,<datalist>,<optgroup>,<option>,<textarea>,<keygen>,<output>,<progress>,<meter>, <details>,<summary>,<menuitem>,<menu>'; } function pietergoosen_custom_wp_trim_excerpt($text) { global $post; $raw_excerpt = $text; if ( '' == $text ) { $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]&gt;', $text); //Add the allowed HTML tags separated by a comma. $text = strip_tags($text, pietergoosen_get_the_content_limit_custom_allowedtags()); //Set the excerpt word count and only break after sentence is complete. $excerpt_word_count = 75; $excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . '&hellip;' . __( 'Read more about this article <span class="meta-nav">&rarr;</span>', 'pietergoosen' ) . '</a>'; $tokens = array(); $out = ''; $count = 0; // Divide the string into tokens; HTML tags, or words, followed by any whitespace preg_match_all('/(<[^>]+>|[^<>\s]+)\s*/u', $text, $tokens); foreach ($tokens[0] as $token) { if ($count >= $excerpt_word_count && preg_match('/[\?\.\!]\s*$/uS', $token)) { // Limit reached, continue until ? . or ! occur at the end $out .= trim($token); break; } // Add words to complete sentence $count++; // Append what's left of the token $out .= $token; } $text = force_balance_tags($out); $text = $text . $excerpt_end; } return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); } remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'pietergoosen_custom_wp_trim_excerpt'); ?> 

Все работает отлично, как задумано, за исключением того, что Read more about this article... появляются в отдельном параграфе после выдержки, а не рядом с последним словом, как в выдержке по умолчанию. В google я вижу, что wordpress добавляет <p> вокруг. Read more about this article Как я могу это исправить.

Единственное, что имеет смысл для меня, это то, что $text сразу после этой строки:

 $text = force_balance_tags($out); 

Что-то, что wpautop переводит как абзац-перерыв – что-то вроде двойной новой строки.

Непроверенный, но я бы подумал, что trim очистит его.

 $text = trim($text) . $excerpt_end; 

Спасибо за ваш ответ @s_ha_dum. В конце концов, я начал работать. Я изменил $text = $text . $excerpt_end; $text = $text . $excerpt_end; в

 $pos = strrpos($text, '</'); // Add 'Read more' text inside last HTML tag $text = substr_replace($text, $excerpt_end, $pos, 0);