Поддержка Проблемы и решения добавить к тегу p класс css

  • Всем привет!

    Стандартно WP выводит запить разбивая её на абзацы с помощью тега <p>. Мне хотелось бы сделать что бы это было<p class="contentText">
    так же хотелось всем тегам <a>в записи тоже добавить класс.
    Подскажите пожалуйста где и как это можно реализовать.

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • а зачем?
    можно самым обычным прегреплейсом пройтись по the_content и заменить одно на другое. но зачем?

    А не могли бы привести пример прегреплейса?

    function pclass($content) {
        $content=str_replace('<p>', '<p class="contentText">', $content);
        return $content;
    }
    add_filter('the_content', 'pclass', 9999);

    Большая благодарность!!! Но абзацы WP всё равно облачает в голый <p> (((
    Мои знания в php очень слабые, последний раз пользовался php более 10 лет назад.

    Подскажите а что за параметр 9999?
    А добавить класс к тегу a надо добавить ещё одну строку:

    function pclass($content) {
        $content=str_replace('<p>', '<p class="contentText">', $content);
        $content=str_replace('<a>', '<a class="link">', $content);
        return $content;
    }
    add_filter('the_content', 'pclass', 9999);

    нет, никакого голого <p> быть не может.
    я код проверил — он работает.
    параметр 9999 это приоритет фильтров — чтобы он запускался уже после всех остальных фильтров движка.

    а с ссылками вы неправильно сделали, нет там закрывающего тега. надо так:

    $content=str_replace('<a', '<a class="link"', $content);

    То, что Вы правы нет сомнений.

    Давайте попробуем вместе найти мою ошибку. Значит ситуация у меня следующая. Делаю тему с нуля. Есть простой html шаблон, простого 15 страничного сайта. Основной вывод записей я уже настроил (обычным вордпрессовым лупом), все стили работают. Вот осталась только эта мелочь.

    Мои действия я создал файл functions.php в папке моей темы, добавил сайдбары как требует тема, они работают. А вот последующие записи не работают. Запись реально облачена исключительно в <p>

    <?php
    
    /**
    * Подключаем левый и правй сайдбар
    **/
     if ( function_exists('register_sidebar') )
    	register_sidebar(array(
    		'before_widget' => '',
    		'after_widget' => '',
    		'before_title' => '<h3>',
    		'after_title' => '</h3>',
    	));
    
    register_sidebar( array(
    'id' => 'left-sidebar',
    'name' => 'Левый сайд бар',
    'description' => __( 'Это меню сайта' ),
    ) );
    
    register_sidebar( array(
    'id' => 'right-sidebar',
    'name' => 'Правый сайд бар',
    'description' => __( 'Сайдбар для сопутсвующеё информации' ),
    ) );
    
    /**
    * Изменяем ссылку читать далее. Пока не работает (((
    **/
    function new_excerpt_more($more) {
    	   global $post;
    	return '<a href="'. get_permalink($post->ID) . '">Читать дальше......</a>';
    }
    add_filter('excerpt_more', 'new_excerpt_more');
    
    /**
    * Изменяем тег p
    **/
    
    function pclass($content) {
        $content=str_replace('<p>', '<p class="contentText">', $content);
        return $content;
    }
    add_filter('the_content', 'pclass', 9999);
    
    ?>

    я не знаю, почему у вас не работает.
    проверил на трех темах — везде работает.
    приведите тут содержимое циклов для вывода контента записей.

    Да я сам уже потусторонние силы подозреваю )))

    Цикл брал из кодекса:

    <!-- Start the Loop. -->
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>      		
    
    		<div id="topic"><span id="topicTitle"><?php the_title(); ?></span></div>
    			<p class="contentText"><?php the_time( 'j.m.Y' ); ?>
    			<?php the_excerpt(); ?></p>
    
    			<p class="contentText"><a href="<?php the_permalink(); ?>" class="link">Читать далее</a></p>
    
     <!-- Остановить Цикл (но есть ключевое слово "else:" - смотрите далее). -->
     <?php endwhile; else: ?>
    
     <!-- В первом "if" проверяется существуют ли каки-либо записи для  -->
     <!-- вывода.  Эта часть "else", говорит что делать, если записей не нашлось.-->
     <p>Новостей пока нет.</p>
    
     <!-- ДЕЙСТВИТЕЛЬНО остановить Цикл -->
     <?php endif; ?>

    и где у вас the_content?
    я вижу только the_excerpt, который выводит анонсы, в которых вся разметка удаляется.

    Flector, прости криворукого и желаю большой кармы за терпение меняподобных!

    Я думал что одна и та же ф-ция генерирует данный контент.
    А можно, в таком случае, для ф-ции the_excerpt сделать тоже самое с тегом <p>?

    нет, нельзя.
    в цитатах разметка удаляется, в том числе и теги параграфов.
    за исключением случаев, когда цитата заполнена вручную.

    вы вместо записей цитаты заполняете что ли?
    меняйте the_excerpt на the_content(‘читать дальше’);

    Flector, так пашет, ещё бы запись можно было укоротить как цитату.

    Я вывожу на главной цитаты, the_excerpt удаляет промежуточные теги параграфов, но облачает всю цитату в просто <p>, который по задумке дизайнера оказался без каких либо отступов и поэтому текст в цитате прилипает к граням. Для оформления контента: как полного текста, так и цитаты в дизайне используется <p class=»contentText»>

    Вот суть проблемы.

    function pclass($content) {
        $content=str_replace('<p>', '<p class="contentText">', $content);
        $content=str_replace('<a>', '<a class="link">', $content);
        return $content;
    }
    add_filter('the_excerpt', 'pclass', 9999);

    Flector, то что надо!
    Большой респект!

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Тема «добавить к тегу p класс css» закрыта для новых ответов.