我目前正在创建一个大学足球博客,我有两种自定义帖子类型:conference
和team
.
每个conference
帖子类型将是一个横向列表,由每个团队的徽标组成,并将显示在每个single
team
只要团队在各自的会议上,就发布。它看起来几乎与此相同:
使用ACF plugin, 我给了每个team
发布类型a会议字段,用户可以从中选择团队所属的会议。
每个conference
post具有各自的HTML
已经为其内容。我的问题是,我如何继续使用PHP
? 我是一个PHP
所以如果答案很明显,请原谅我。
我从一个网站上得到了这个想法D1ARugby.com. 我正在努力实现的示例如下:
任何帮助都将不胜感激!非常感谢。
更新,这是我目前在单队帖子中使用的模板。它适用于名称仅为一个单词而非多个单词的会议。
<?php
// get team posts
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$team_args = array(
\'posts_per_page\' => 1,
\'post_type\' => \'team\',
\'post_status\' => \'publish\',
\'suppress_filters\' => true,
\'paged\' => $paged
);
$conf_args = array(
\'posts_per_page\' => 1,
\'post_type\' => \'conference\',
\'post_status\' => \'publish\',
\'suppress_filters\' => true,
\'paged\' => $paged
);
$teams = get_posts($team_args);
$conferences = get_posts($conf_args);
foreach($teams as $team) : setup_postdata($team);
?>
<section id="conference" class="row">
<?php foreach($conferences as $conf) : setup_postdata($conf); ?>
<div class="conf-header">
<?php
$conference_name = get_post_meta( get_the_id(), \'conference\', true );
$conference = get_page_by_title( $conference_name, OBJECT, \'conference\' );
?>
<h1 class="conference-title"><?php echo $conference_name; ?></h1>
<?php
if ($conference) {
echo apply_filters( \'the_content\', $conference->post_content );
}
?>
</div>
<?php endforeach; ?>
</section>
我知道为什么它会显示在名为“California”和“West”的会议上,但不会显示在名为“Big Ten”或“Red River”的会议上任何关于为什么会发生这种情况的想法都将不胜感激。
谢谢大家!
最合适的回答,由SO网友:Scott Nelle 整理而成
根据会议字段是否存储文本字符串(如“Big Ten”)与会议帖子的ID,您需要的代码略有不同。我将包括以下两个方面:
Text String Example
// place this code inside the loop of your single-team template
$conference_name = get_post_meta( get_the_id(), \'conference\', true );
$conference = get_page_by_title( $conference_name, OBJECT, \'conference\' );
if ($conference) {
echo apply_filters( \'the_content\', $conference->post_content );
}
ID Example
// place this code inside the loop of your single-team template
$conference_id = get_post_meta( get_the_id(), \'conference\', true );
$conference = get_post( $conference_id );
if ($conference) {
echo apply_filters( \'the_content\', $conference->post_content );
}