Intereting Posts
просмотреть сделанные запросы? Установленный WordPress с неаккуратным. Должен ли я обновлять вручную или с помощью Softaculous? Как изменить настройки администратора моего плагина, чтобы плагин можно было добавить на конкретную страницу? создать пользовательский столб храма для плагина Как ограничить количество сообщений на странице пользовательского типа сообщений? Выдача области ввода комментариев WordPress ajax работает на FF, но не на IE и хром Использование wp_query для изменения цикла в index.php для CPT адаптивные признанные изображения wordpress 4.4 grid Удалить меню настройки фона и заголовка из меню Appearance без CSS или JS Создать форму поиска в меню, как в Twenty Fourteen theme необходимо добавить имена пользователей в сообщение для последующего извлечения или удаления Mod_Rewrite, чтобы показывать только последнюю подкатегорию в URL-адресе $ wpdb-> get_results утечка памяти Переход через цикл foreach – добавление +1 к концу, так что в следующий раз, когда он начнет цикл, он начнется с пункта 2

Можно ли отдельно обрабатывать отдельный раздел почты?

Я немного потрудился с WordPress, но я далек от эксперта, поэтому извиняюсь заранее, если это дублирующий вопрос.

Я создал простую тему WordPress, основанную на Bootstrap, и я могу успешно отображать сообщения, используя the_content() , при заполнении боковой панели с помощью get_sidebar() .

Мой вопрос заключается в том, можно ли пометить определенный раздел сообщения и обработать этот раздел по-разному, чем остальная the_content() . Вот пример:

введите описание изображения здесь

Вот какой-то псевдокод:

 <?php get_header(); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="row"> <div class="col-md-12"> <!--tag one image within the post, to appear across all 12 columns--> </div> </div> <h1><?php the_title(); ?></h1> <div class="row"> <div class="col-md-8"> <!--the rest of the post, minus the tagged image, goes here--> <?php the_content(); ?> </div> <div class="col-md-4"> <?php get_sidebar(); ?> </div> </div> <?php endwhile; else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> <?php get_footer(); ?> 

В этом случае я хотел бы пометить (или иным образом идентифицировать) одно изображение из сообщения и отобразить его в div col-md-12 , а остальная часть сообщения перейдет в div col-md-8 .

Я читал о the_excerpt() но я не верю, что это сработает.

Solutions Collecting From Web of "Можно ли отдельно обрабатывать отдельный раздел почты?"

Вы можете использовать выделенные изображения, как это было предложено @gmazzap в комментариях. Этот признак не будет включен в сообщение. Однако, если у вас уже есть ваши изображения, включенные в почтовый контент, вам необходимо разделить содержимое сообщения на две части, как вы сказали в своем вопросе.

У меня есть две функции, одна из которых возвращает все изображения (или любые содержимое тегов html) из содержимого и одну функцию, которая возвращает текст без нужного тега / изображений. Обе эти функции используют DOMDocument

Первая функция get_content_without_tag() возвращает содержимое, которое было удалено из изображений. Есть два параметра

  • $html -> Текст с изображениями, которые нужно удалить, в этом случае используйте apply_filters( 'the_content', get_the_content() ) для использования содержимого сообщения

  • $tag -> Название тега для выделения, в данном случае, 'a' в a тэгов, удерживающих изображения

Вот функция

 function get_content_without_tag( $html, $tag ) { $dom = new DOMDocument; $dom->loadHTML( $html ); $dom_x_path = new DOMXPath( $dom ); while ($node = $dom_x_path->query( '//' . $tag )->item(0)) { $node->parentNode->removeChild( $node ); } return $dom->saveHTML(); } 

Затем вы использовали бы это вместо the_content() где вам нужно было бы отображать только текст, удаляя полный тег <a/> в котором изображения выглядят следующим образом

 echo get_content_without_tag( apply_filters( 'the_content', get_the_content() ), 'a' ) 

Вторая функция get_tag_without_text() возвращает содержимое между желаемым тегом, в вашем случае, изображениями. Параметры точно такие же, как и первая. Вот функция

 function get_tag_without_text( $html, $tag ) { $document = new DOMDocument(); $document->loadHTML( $html ); $tags = []; $elements = $document->getElementsByTagName( $tag ); if ( $elements ) { foreach ( $elements as $element ) { $tags[] = $document->saveHtml($element); } } return $tags; } 

Эта функция возвращает массив изображений, если вы используете теги, поэтому для отображения первого изображения используйте следующую функцию:

 $image = get_tag_without_text( apply_filters( 'the_content', get_the_content() ), 'a' ); echo $image[0]; 

Только один окончательный совет по вашему коду, переместите свой вызов на боковую панель за пределами вашего цикла. Он должен идти чуть выше вызова нижнего колонтитула

Вы можете попробовать использовать плагин дополнительных настраиваемых полей . Вы можете добавить поле изображения на страницу в области содержимого, а затем просто вывести это настраиваемое поле там, где вы хотите его на странице, используя следующее: где field_name – имя создаваемого вами поля. Затем вы просто обернули бы код в любом CSS, который вы хотели.

 <p><?php the_field('field_name'); ?></p> 

Вы также можете просто рассмотреть использование отображаемого изображения.