php - 如何在WordPress中按ID提取和显示帖子?
问题描述
所以,我在 WordPress 中有这个特殊的页面模板。我想用它来按 ID 显示一些帖子(我将指定)。
就像是
<?php displayPost(10); ?>
它将包含帖子缩略图、标题和我将使用的帖子元数据中的一些值。
经过几个小时的搜索和汗水,这就是我所拥有的
<?php
class episodeDetails
{
public $id;
function episodeTitle(){
$title = get_the_title($this->id);
$mykey_values = get_post_custom_values( 'episode', $this->id);
foreach ( $mykey_values as $key => $value ) {
return $title." : ".value;
}
}
function episodeImage(){
return get_the_post_thumbnail_url($this->id);
}
function episodeLink(){
return get_the_permalink($this->id);
}
function episodeMp3(){
$mykey_values = get_post_custom_values( 'enclosure', $this->id);
foreach ( $mykey_values as $key => $value ) {
return strtok($value, "\n");
}
}
}
$episode = new episodeDetails;
$episode->id="480";
?>
<div class="list-videos">
<div class="list-videos-image">
<a href="<?php echo $episode->episodeLink(); ?>" title="<?php echo $episode->episodeTitle(); ?>"><img width="404" height="404" src="<?php echo $episode->episodeImage(); ?>" class="attachment-portfolio-thumbnail wp-post-image" alt="<?php echo $episode->episodeTitle(); ?>"></a>
</div>
<div class="list-videos-text">
<a href="<?php echo $episode->episodeLink(); ?>" rel="bookmark" title="<?php echo $episode->episodeTitle(); ?>!"><?php echo $episode->episodeTitle(); ?></a><br><a class="button" href="<?php echo $episode->episodeLink(); ?>" rel="bookmark"><i class="fas fa-play"></i> Play Now</a> <a class="button" href="<?php echo $episode->episodeMp3(); ?>" download=""><i class="fas fa-download"></i> Download MP3</a>
</div>
</div>
现在,它确实显示了我想要的,但我觉得它可以以更好、更简单的方式完成。我的方式将要求我为每个额外的帖子一次又一次地复制和粘贴整个 HTML 块。我想简化它,我正在寻找是否有一种简洁的方法,而不是我觉得是递归的冗长而复杂的 HTML 部分。
谢谢
解决方案
严格回答您的问题:只需使用foreach
循环。
// Your class declaration to be put here...
// Then declare your IDs
$episodeIds = array(480, 481, 482, ...);
// And finally loop over them
foreach($episodeIds as $id) {
$episode = new episodeDetails;
$episode->id=$id;
?><div class="list-videos">
<div class="list-videos-image">
<a href="<?php echo $episode->episodeLink(); ?>" title="<?php echo $episode->episodeTitle(); ?>"><img width="404" height="404" src="<?php echo $episode->episodeImage(); ?>" class="attachment-portfolio-thumbnail wp-post-image" alt="<?php echo $episode->episodeTitle(); ?>"></a>
</div>
<div class="list-videos-text">
<a href="<?php echo $episode->episodeLink(); ?>" rel="bookmark" title="<?php echo $episode->episodeTitle(); ?>!"><?php echo $episode->episodeTitle(); ?></a><br><a class="button" href="<?php echo $episode->episodeLink(); ?>" rel="bookmark"><i class="fas fa-play"></i> Play Now</a> <a class="button" href="<?php echo $episode->episodeMp3(); ?>" download=""><i class="fas fa-download"></i> Download MP3</a>
</div>
</div><?php
}
或者您可以将代码的模板部分包装在一个函数中(如您的示例displayPost(...)
),然后在循环中调用该函数。
// Your class declaration to be put here...
// The display method gets the $episode object as parameter
function displayPost($episode) {
?><div class="list-videos">
<div class="list-videos-image">
<a href="<?php echo $episode->episodeLink(); ?>" title="<?php echo $episode->episodeTitle(); ?>"><img width="404" height="404" src="<?php echo $episode->episodeImage(); ?>" class="attachment-portfolio-thumbnail wp-post-image" alt="<?php echo $episode->episodeTitle(); ?>"></a>
</div>
<div class="list-videos-text">
<a href="<?php echo $episode->episodeLink(); ?>" rel="bookmark" title="<?php echo $episode->episodeTitle(); ?>!"><?php echo $episode->episodeTitle(); ?></a><br><a class="button" href="<?php echo $episode->episodeLink(); ?>" rel="bookmark"><i class="fas fa-play"></i> Play Now</a> <a class="button" href="<?php echo $episode->episodeMp3(); ?>" download=""><i class="fas fa-download"></i> Download MP3</a>
</div>
</div><?php
}
// Then declare your IDs
$episodeIds = array(480, 481, 482, ...);
// And finally loop over them
foreach($episodeIds as $id) {
$episode = new episodeDetails;
$episode->id=$id;
displayPost($episode);
}
推荐阅读
- android - 浮动按钮需要隐藏在键盘上方
- java - java.sql.DataTruncation:数据截断异常与LIKE运算符关系
- reactjs - TypeError:无法获取未定义或空引用的属性“映射”
- java - 字符串作为 Spring 实体的 Id
- codenameone - 代号 相当于 Flutter Canvas.drawDRRect 的一种代码
- tabs - ionic 3 侧边菜单和标签菜单导航
- html - 如何使用 ngModel 和 ngModelChange angular 4 更改下面的数组列表
- glsl - 选择返回 vec4 的代码行,并将浮点 alpha 值应用于 vec3 颜色*
- node.js - 什么是 HTTP 标头以及它们的含义?
- html - 为 html css 中的类名应用 :focus