我已经注册了小部件并完成了大部分工作,我想显示5个最新帖子而不是1个特定帖子。我需要的只是帖子的图像和标题。我如何实现这一点,我试图搜索但找不到任何解决方案,如果已经回答请提供链接?
// Creating widget front-end
function widget($args, $instance)
{
$post = get_post($instance['post_id']);
echo $args['before_widget'];
if ( !empty($instance['widget_title']) ) {
echo $args['before_title'] . $instance['widget_title'] . $args['after_title'];
}
?>
<article class="post post-sidebar" itemscope itemtype="https://schema.org/Article">
<?= get_the_post_thumbnail($post, 'thumbnail', ['itemprop' => 'thumbnail']) ?>
<h4 itemprop="name">
<a itemprop="url" href="<?= esc_url( get_permalink($post) ) ?>">
<?= get_the_title($post) ?>
</a>
</h4>
<div class="category-info">
<?php the_category(', ', '', $instance['post_id']) ?>
</div>
</article>
<?php
echo $args['after_widget'];
}
function form($instance)
{
$widget_title = !empty($instance['widget_title']) ? $instance['widget_title'] : '';
$post_id = !empty($instance['post_id']) ? $instance['post_id'] : 1;
?>
<p>
<label for="<?= $this->get_field_id('widget_title') ?>">
<?= __('Title of the widget:', 'text-domain') ?>
</label>
<input class="widefat" type="text" name="<?= $this->get_field_name('widget_title') ?>" value="<?= $widget_title ?>">
</p>
<p>
<label for="<?= $this->get_field_id('post_id') ?>">
<?= __('Displaying infomation of post ID:', 'text-domain') ?>
</label>
<input type="number" name="<?= $this->get_field_name('post_id') ?>" value="<?= $post_id ?>">
</p>
<?php
}
/**
* Save back-end form.
*/
function update($new_instance, $old_instance)
{
$instance = [];
$instance['widget_title'] = sanitize_text_field($new_instance['widget_title']);
$instance['post_id'] = absint($new_instance['post_id']);
return $instance;
}
答案 0 :(得分:0)
您需要在要显示最新帖子的WordPress主题文件中添加以下代码 -
<?php $catquery = new WP_Query( 'cat=72&posts_per_page=5' ); ?>
<ul>
<?php while($catquery->have_posts()) : $catquery->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title();
?></a></li>
<?php endwhile;
wp_reset_postdata();
?>
此代码的第一行创建一个具有特定类别ID的新WordPress查询。您需要将其替换为您自己的类别ID。它只显示列表中的帖子标题。
您可以通过添加以下代码来更改它以显示完整内容:
<?php $catquery = new WP_Query( 'cat=72&posts_per_page=5' ); ?>
<ul>
<?php while($catquery->have_posts()) : $catquery->the_post(); ?>
<li><h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
<ul><li><?php the_content(); ?></li>
</ul>
</li>
<?php endwhile; ?>
</ul>
<?php wp_reset_postdata(); ?>
您还可以使用the_excerpt替换the_content以显示摘录而不是完整文章。