Плагин WordPress: поиск <! - more -> в the_content - PullRequest
0 голосов
/ 20 мая 2009

Я пишу плагин WordPress, который фильтрует the_content , и я хотел бы использовать тег <!--more-->, но, похоже, он был удален к тому времени, когда он достиг меня , Похоже, это не фильтр, а функция работы WordPress.

Конечно, я могу прибегнуть к перезагрузке уже загруженного контента из базы данных, но, похоже, это может вызвать другие проблемы. Есть ли какой-нибудь хороший способ получить необработанный контент без удаления <!--more-->?

Ответы [ 3 ]

6 голосов
/ 21 мая 2009

Скорее всего, к моменту запуска вашего плагина <!--more--> будет преобразовано в <span id="more-1"></span>

Это то, что я использую в своем плагине, который добавляет некоторую разметку сразу после тега <!--more-->:

add_filter('the_content', 'inject_content_filter', 999);

function inject_content_filter($content) {
  $myMarkup = "my markup here<br>";
  $content = preg_replace('/<span id\=\"(more\-\d+)"><\/span>/', '<span id="\1"></span>'."\n\n". $myMarkup ."\n\n", $content);
  return $content;
}
1 голос
/ 26 января 2013

Вы можете использовать следующий код:

Функция! Is_single () не отображает дополнительную ссылку на странице просмотра сообщений.

add_filter('the_content', 'filter_post_content');
function filter_post_content($content,$post_id='') {

        if ($post_id=='') {
            global $post;
            $post_id = $post->ID;
        }

        // Check for the "more" tags
        $more_pos = strpos($filtered_content, '<!--more-->');
        if ($more_pos && !is_single()) {
            $filtered_content = substr($filtered_content, 0, $more_pos);

            $replace_by = '<a href="' . get_permalink($post_id) . '#more-' . $post_id 
                    . '" class="more-link">Read More <span class="meta-nav">→</span></a>';

            $filtered_content = $filtered_content . $replace_by;
        }

        return $filtered_content;
    }
0 голосов
/ 31 октября 2015

Основано на ответе Фрэнка Фармера Я решил добавить миниатюру фотографии после сгенерированного тега more (<span id="more-...) в файл single.php со следующим:

// change more tag to post's thumbnail in single.php
add_filter('the_content', function($content)
{
    if(has_post_thumbnail())
    {
        $post_thumbnail = get_the_post_thumbnail(get_the_ID(), 'thumbnail', array('class'=>'img img-responsive img-thumbnail', 'style'=>'margin-top:5px;'));
        $content = preg_replace('/<span id\=\"(more\-\d+)"><\/span>/', '<span id="\1"></span>'.$post_thumbnail, $content);
    }
    return $content;
}, 999);
...