Как распечатать весь пост на странице (WordPress)

Привет! Я создал пользовательский тип записи ‘work_fields’, который вызывает информацию из еще одного пользовательского типа публикации ‘members’ в сообщение, и теперь я пытаюсь создать ШАБЛОН СТРАНИЦЫ, который отображает список заголовков пользовательского сообщения. введите ‘work_fields’, и когда вы щелкнете по заголовку, весь пост (‘work_fields’) будет отображаться в элементе div с именем ‘single-post-container’ под заголовками. сейчас у меня все работает нормально, но я хочу отображать сообщение в div ‘single-post-container’ при загрузке страницы. (на данный момент отображаются только заголовки сообщений, и в div ничего нет). Как я могу получить div для отображения самой последней записи с пользовательским типом записи ‘work_fields’ при загрузке страницы? Это код для пользовательского шаблона страницы.

<div class="row">
<div class="small-12 medium-10 large-offset-1 columns">
<h2><?php the_title(); ?></h2>
</div>
</div>
<div class="row halfsection">
<div class="small-12 medium-10 large-offset-1 columns">
<div class="category_container">
<?php
$args = array('post_type' => 'work_fields',);
$query = new WP_Query( $args );
?>

<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<p class="category_item"><a class="post-link" rel="<?php the_ID(); ?>" href="<?php the_permalink(); ?>"><?php  echo get_the_title(); ?></a></p>
<?php endwhile; endif; ?>
</div>
</div>
</div>
<div class="row">
<div class="small-12 medium-10 large-offset-1 columns">
<hr>
</div>
</div>
<div id="single-post-container">
//THIS IS WHERE THE POST CONTENTS SHOWS BUT I WANT THE MOST RECENT POST TO BE HERE ON PAGE LOAD, BEFORE I CLICK ANY OTHER POST//
</div>

Спасибо! Ваша помощь очень ценится!

0

Решение

Просто дважды используйте WP_query, получая последние сообщения в аргументах,

$args2 = array('post_type' => 'work_fields', 'orderby' => 'ID', 'order'=> 'DESC' , 'posts_per_page' => 5);
$query2 = new WP_Query( $args2 );
?><div id="single-post-container"><?php
// The Loop
if ( $query2->have_posts() ) {
echo '<ul>';
while ( $query2->have_posts() ) {
$query2->the_post();
echo '<li>' . get_the_content() . '</li>';
}
echo '</ul>';
/* Restore original Post Data */
wp_reset_postdata();
}
?></div><?php

Поместите div вне петли. Он покажет содержание последних 5 постов.

0

Другие решения

Если все, что находится выше div-post-container, работает нормально, то для этого конкретного div вы можете загрузить самую последнюю публикацию, используя приведенный ниже код. Обязательно сбросьте данные предыдущего поста с помощью wp_reset_postdata ()

Документация Кодекса. https://codex.wordpress.org/Function_Reference/wp_get_recent_posts

<?php
$args = array(
'numberposts' => 1,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'work_fields',
'post_status' => 'publish',
'suppress_filters' => true
);

$recent_posts = wp_get_recent_posts( $args, ARRAY_A );
?>
0

Поэтому я просто воссоздал разметку типа поста на своей странице. Я уверен, что есть лучший способ сделать это, но ради времени я должен был по крайней мере заставить это работать. Я также попытался использовать функцию jquery onclick и просто щелкнуть первый заголовок после того, как все загрузится, но была ошибка, которая просто продолжала выдвигать все заголовки, поэтому я почти сдался.
вот код

<div class="row">
<div class="small-12 medium-10 large-offset-1 columns">
<h2><?php the_title(); ?></h2>
</div>
</div>
<div class="row halfsection">
<div class="small-12 medium-10 large-offset-1 columns">
<div class="category_container">
<?php
$args = array(
'post_type' => 'work_fields',
);
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<p class="category_item"><a class="post-link" rel="<?php the_ID(); ?>" href="<?php the_permalink(); ?>"><?php  echo get_the_title(); ?></a></p>
<?php endwhile; endif; ?>

</div>
</div>
</div>
<div class="row">
<div class="small-12 medium-10 large-offset-1 columns">
<hr>
</div>
</div>
<div id="single-post-container">
<?php
$args2 = array(
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'work_fields',
'post_status' => 'publish',
'posts_per_page' => 1,
);
$query2 = new WP_Query( $args2 );
if ( $query2->have_posts() ) : ?>
<?php $post = get_post($_POST['id']); ?>
<div id="single-post post-<?php the_ID(); ?>">
<?php while ( $query2->have_posts() ) : $query2->the_post(); ?>
<div class="row section">
<div class="small-12 medium-7 large-offset-1 columns">
<h2><?php the_title(); ?></h2>
<h3>소개</h3>
<p class="halfsection"><?php the_field('work_fields_intro'); ?></p>
<h3>주요서비스</h3>
<p class="halfsection"><?php the_field('work_fields_service'); ?></p>
<h3>주요실적</h3>
<p class="halfsection"><?php the_field('work_fields_accomplishment'); ?></p>
</div>
<?php endwhile; endif; ?>
<div class="small-6 medium-3 large-2 columns large-offset-1 end">
<?php
$posts = get_field('team_member');
if( $posts ): ?>
<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
<?php setup_postdata($post); ?>
<div class="member_container halfsection">
<div class="member"><?php the_post_thumbnail(); ?></div>
<p class="member_name"><?php the_title(); ?></p>
<ul class="members_info">
<li><?php the_field('members_position'); ?></li>
<li><?php the_field('members_e-mail'); ?></li>
<li><?php the_field('members_phone'); ?></li>
</ul>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector