Поддержка Проблемы и решения вывод изображении тегом more

  • известно, что the_excerpt()
    Выводит «отрывок» (цитату) поста или первые 55 слов контента, со вставкой в конец […].

    Используется внутри Цикла WordPress.

    Если «Отрывок» не указан (указывается при создании поста), то функция «создаст» его самостоятельно из первых 55 слов контента. HTML теги, шорткоды и графика при этом будут вырезаны (они не будут учитываться при подсчете слов).

    Также известно,что the_content()
    Выводит контент текущего поста (записи).

    Тег шаблона, должен использоваться внутри Цикла WordPress или на странице записи (page.php, single.php), в начале которой вызвана функция the_post().

    Когда функция используется на страницах архивов (не отдельная страница записи) и если в контенте используется тег-разделитель <!—more—>, то эта функция выведет не весь контент, а только текст до тега <!—more—> с последующей ссылкой «читать дальше» (текст ссылки можно изменить через параметр $more_link_text).

    Причем get_extended()
    Разделяет контент на 2 части до тега <!—more—> и после него. Возвращает массив с полученными частями.

    Исходя из вышесказанного, мы когда в записи вставим тег «далее» , на главной,на странице архивов и тегов выводит отрывок до тега далее включая изображение до тега далее.Но такой вывод изображении на главной неудобно тем, что Ж
    1. Тег «далее» перебрасывает читателю на ту часть, где вставлен самый тег «далее».
    2. Нет необходимости вставить тег «далее» , если he_excerpt()
    автоматически выводит «отрывок» (цитату) поста или первые 55 слов контента.

    Вопрос:
    1. Как сделать, что функция the_excerpt() выводил не только голый текст, а еще изображение? … ИЛИ…
    2.Как сделать, что тег далее не перебросил читателя на ту часть записи,где вставлен самый тег ?
    Стоит отметить, что после нажатия «читать далее» в концу адресной строки добавляется #more-цифры, например https://www.rianovost.ru/in-the-summer-of-2018-new-laws/#more-3306

    Рассматриваю следующие варианты:
    1.Настроить редирект таким образом, что обрезать в конце адресной строки /#more-****
    ИЛИ
    2.Запретить тегу «далее» перебросить на вторую часть
    ИЛИ
    3.Заставить функцию the_excerpt() выводить не только голый текст, а еще изображение.
    ИЛИ
    4.Автоматический вывод первой изображении так, как это удается open graph
    Плагины не предлагать!Я все их перепробовал у каждого либо лишние функции ,либо необходимые функции платные.
    Спасибо!

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Модератор Yuri

    (@yube)

    add_filter( 'the_content_more_link', function ( $link ) {
        return preg_replace( '/#more-\d+/', '', $link );
    });
    

    Я все их перепробовал

    Позвольте усомниться. Дюжину лет назад я видел (а может даже и сам писал) плагин, делающий в точности то же, что и приведенный выше код. Ничего лишнего, только убирает #more-nnnn у ссылки «Читать далее».

    приведенный выше код

    А куда вставить этот код? В каком файле и в каком месте в файле?

    Модератор Yuri

    (@yube)

    А куда вставить этот код?

    Как обычно. Либо в functions.php дочерней темы, либо оформить как плагин, либо в плагин, предназначенный для сниппетов.

    вставил в конце functions, но не сработал. по прежнему прыжок и #more присутствуют

    Модератор Yuri

    (@yube)

    Ну не знаю, у меня в 2012 работает. Либо тема как-то не так выводит, либо есть еще какой-то обработчик, либо кэширование, либо еще что-то. Отсюда не видно.

    Отсюда не видно.

    видно,
    в «посмотреть код» за кнопку отвечает следующий код:
    <a title="Летом 2018 года в России вступят в силу новые законы и нормативные акты, которые повлияют на жизнь россиян." class="read-more content-read-more" href="https://www.rianovost.ru/in-the-summer-of-2018-new-laws/#more-3306">ЧИТАТЬ ДАЛЕЕ <span class="screen-reader-text">Летом 2018 года в России вступят в силу новые законы и нормативные акты, которые повлияют на жизнь россиян.</span></a>

    Здесь очень интересно, когда в записи не вставлю тег «далее». То на главной тоже выводится отрывок, но если миниатюра не задана, выводится голый текст, за это отвечает настройка темы, этот метод хорош, но не выводит первое изображение. Когда в браузере исследую код, показывает класс class=»read-more». Но когда в записи вставлю тег далее показывают класс class=»read-more.content-read-more» .когда class=»read-more» то в конце ссылки href=»https://www.rianovost.ru/in-the-summer-of-2018-new-laws/&#187;
    То есть класс read-more не добавит в концу адреса #more-NNNN а это сделает класс class=»read-more.content-read-more»
    А тег далее вызывает именно этот класс

    Модератор Yuri

    (@yube)

    видно,

    Видно результат, но не как и чем он формируется.

    То есть класс read-more не добавит в концу адреса #more-NNNN а это сделает класс class=»read-more.content-read-more»

    Класс добавляет что-то в исходный html? Это что-то новенькое 🙂

    Класс добавляет что-то в исходный html? Это что-то новенькое

    Согласен! Я «хромаю» в этом деле))) но если вариантов нет, хот плагины предлагайте.
    Кстати моя тема GeneratePress многим она известна, или тема не причём, за эту кашу ядро отвечает? И к слову, если сейчас я тему поменяю то на всех записях появится две «читать далее» придётся залезть во всех записях и удалить тег «далее». Но эта тема отдельного разговора, сейчас задача стоит в удаления прыжка тега далее или без тега далее выводить изображение. Интуиция подскажет, что это возможно, но логика хромает к сожалению))

    Модератор Yuri

    (@yube)

    И к слову, если сейчас я тему поменяю то на всех записях появится две «читать далее»

    Важный момент. Если что-то создает еще одну альтернативную ссылку, то менять создаваемую ядром нет ни малейшего смысла. А чтобы менять альтернативную, надо знать, кто и как ее генерирует.

    у меня в родительской теме в файле theme-functions.php нашел такой код:

    if ( ! function_exists( 'generate_show_excerpt' ) ) {
    	/**
    	 * Figure out if we should show the blog excerpts or full posts
    	 * @since 1.3.15
    	 */
    	function generate_show_excerpt() {
    		global $post;
    
    		// Check to see if the more tag is being used.
    		$more_tag = apply_filters( 'generate_more_tag', strpos( $post->post_content, '<!--more-->' ) );
    
    		$format = ( false !== get_post_format() ) ? get_post_format() : 'standard';
    
    		$show_excerpt = ( 'excerpt' === generate_get_option( 'post_content' ) ) ? true : false;
    
    		$show_excerpt = ( 'standard' !== $format ) ? false : $show_excerpt;
    
    		$show_excerpt = ( $more_tag ) ? false : $show_excerpt;
    
    		$show_excerpt = ( is_search() ) ? true : $show_excerpt;
    
    		return apply_filters( 'generate_show_excerpt', $show_excerpt );
    	}
    }

    возможно ли на основе этого кода в дочерней теме что то сделать,что удалить прыжок после нажатия «читать далее»

    Кроме вашего кода, в интернете нашел других кодов, которые тже не работают

    https://www.wordpressask.com/more-2.html сделал по их инструкции тоже 0 результатов
    http://dimox.name/udalyaem-yakor-vida-more-123-iz-ssylki-chitat-dalee/ тоже толку ноль

    даже инструкция от кодекса вордпресс не помог к сожалению

    https://codex.wordpress.org/Customizing_the_Read_More#Link_Jumps_to_More_or_Top_of_Page

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «вывод изображении тегом more» закрыта для новых ответов.