Intereting Posts
Добавить новую категорию Удаленные комментарии Disqus синхронизируются с wordpress, но активные комментарии не Исключить пользовательский тип сообщения из общей пользовательской таксономии Являются ли функции входа в систему частью WP-сервера? Как заказывать сообщения по meta_value и заголовку Приложение в WordPress не подходит для мобильного экрана get_the_post_thumbnail ($ post-> ID, миниатюра); не работает. Как я могу это решить? Попытка получить свойство ошибки, отличной от объекта, используя get_post_meta () Плагины для логотипа в wp-темах? Как безопасно дезинфицировать текстовое поле, которое принимает полный ввод HTML Как условно добавить виджет через hook в functions.php Как обрабатывать структуру страницы / таксономии / сообщения без того, чтобы wordpress путался с URL-адресом Загружать прикрепленные изображения на одном сайте страницы с помощью fancybox показать скрытую ul, если li активна Добавление объявлений после определенного количества абзацев в разделе «Бытие»

Отображать форматы сообщений по-разному на index.php (функция цикла)

Я новичок в WordPress, и я надеюсь отображать форматы сообщений по-разному на домашней странице; вроде как этот образ:

домашняя страница

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

В моем index.php меня есть

 <?php if(have_posts()) : while(have_posts()) : the_post(); echo cool_post_article_normal_block(); endwhile; endif; ?> 

В функции говорится:

 function cool_post_article_normal_block ($usecategory = false) { add_filter( 'excerpt_length', 'cool_article_excerpt_latest_length', 999 ); add_filter('excerpt_more', 'cool_article_excerpt_latest_more'); $timeformat = "<time class='post-date' datetime='" . get_the_time("Ymd H:i:s") . "'>" . get_the_time("F j, Y ") . "</time>"; $categoryarray = get_the_category(); $categorytext = ''; if(!empty($categoryarray)) $categorytext = "<span class='post-category'><a href='" . get_category_link($categoryarray[0]->term_id) . "' rel='category'>" . $categoryarray[0]->name . "</a></span>"; $authorurl = get_author_posts_url(get_the_author_meta('ID')); $authorname = apply_filters('cool_get_author_name', null); $authortext = '<span class="post-author">'. __('By', 'cool_textdomain') . ' <a href="' . $authorurl .'" rel="author">' . $authorname .'</a></span>'; $firsttext = $authortext; if($usecategory) { $firsttext = $categorytext; } $post_class = get_post_class(array('review-list', 'clearfix'), get_the_ID()); if(is_sticky()) { $htmlcontent = '<article class="'. implode(' ', $post_class) .'"> <div class="col-md-6"> ' . apply_filters('cool_featured_figure_lazy', null, 'half-post-featured') . ' </div> <div class="col-md-6"> <div class=""> <header class="content"> <h2 class="post-title"><a href="'. get_permalink(get_the_ID()) .'">'. get_the_title() .'</a></h2> </header> <div class="post-meta"> ' . $firsttext . ' ' . $timeformat . ' </div> <div class="post-excerpt"> <p>'. get_the_excerpt() .'</p> </div> </div> </div> </article>'; } else { $htmlcontent = '<article class="'. implode(' ', $post_class) .'"> <div class="col-md-5"> ' . apply_filters('cool_featured_figure_lazy', null, 'half-post-featured') . ' </div> <div class="col-md-7"> <div class=""> <header class="content"> <h2 class="post-title"><a href="'. get_permalink(get_the_ID()) .'">'. get_the_title() .'</a></h2> </header> <div class="post-meta"> ' . $firsttext . ' ' . $timeformat . ' </div> <div class="post-excerpt"> <p>'. get_the_excerpt() .'</p> </div> </div> </div> </article>'; } remove_filter( 'excerpt_length', 'cool_article_excerpt_latest_length'); remove_filter( 'excerpt_more', 'cool_article_excerpt_latest_more'); return $htmlcontent; } 

Я понимаю, что я должен изменять между <article></article> но то, что я не знаю, как это сделать, – это получить условный формат сообщения ; тем более, что уже есть липкая условность – и я плохо знаю PHP 🙁

Я очень новичок в PHP, поэтому я не уверен, как это сделать. У меня активировано несколько форматов сообщений: quote , video , gallery , audio и image .

Я бы хотел, чтобы в цикле было что-то вроде:

 if (sticky) { if (quote) show title only } elseif (video, audio, gallery) { show title show excerpt } elseif(image){ show title show featured image } else { if (quote) { show title only }elseif (video, audio, gallery){ show title show excerpt } elseif (image) { show title show featured image } 

Solutions Collecting From Web of "Отображать форматы сообщений по-разному на index.php (функция цикла)"

Лучший способ сделать это – получить формат сообщения, а затем использовать оператор switch, например:

 $my_format = get_post_format (); switch ($my_format) { case 'quote': $htmlcontent = ... ; break; case 'aside': $htmlcontent = ... ; break; and so on } 

Функция, которая создает $ htmlcontent, начинается с объявления некоторых строительных блоков, которые используются позже (от $ timeformat до $ firsttext). Вы можете улучшить это, установив большие блоки. Код, как сейчас, например, уже был бы лучше, если бы у него были такие блоки:

 $post-title = '<header class="content"> <h2 class="post-title"><a href="'. get_permalink(get_the_ID()) .'">'. get_the_title() .'</a></h2> </header>'; 

Этот код теперь дублируется, что никогда не является хорошей идеей.

Если посмотреть на свой список, вы действительно изменяете результат по умолчанию для выдержек для форматов изображений и цитат (на данный момент), вы можете удалить их с the_excerpt фильтра the_excerpt

 add_filter('the_excerpt','custom_post_format_excerpt',99); function custom_post_format_excerpt() { $noexcerptformats = array('quote','image'); if (has_post_format($noexcerptformats)) {$excerpt = '';} return $excerpt; } 

Похоже, у вашей темы есть настраиваемый фильтр для миниатюры, называемый cool_featured_figure_lazy с двумя аргументами … вы можете попробовать что-то подобное, чтобы удалить признак изображения для чего угодно, кроме форматов сообщений (и стандартных сообщений):

 add_filter('cool_featured_figure_lazy','custom_post_format_thumbnail',99,2); function custom_post_format_thumbnail($thumbnail,$class) { $nothumbnailformats = array('quote','video','audio','gallery'); if (has_post_format($nothumbnailformats)) {$thumbnail = '';} return $thumbnail; } 

Если вам нужно, вы можете изменить заголовок аналогично, вы можете использовать фильтр the_title для этого … например.

 add_filter('the_title','custom_post_format_title',99); function custom_post_format_title($title) { if (is_sticky()) {$title = 'Featured: '.$title;} return $title; }