如果自定义字段为某个值,则获取特定模板部件

时间:2013-11-25 作者:pendjer

我有一个问题,我不知道如何解决它。我尝试了一些解决方案,但我失败了,因为我不是一个好的程序员。我也试图找到一个解决方案,但没有提出类似的问题。所以这就是问题所在。

我有一个名为“安排”的自定义帖子类型,与该CPT关联的自定义字段之一是名为“夜晚”的选择框(rtm_nights), 具有选项:

在我的single-arrangements.php 有一个get_template_part 调用的函数content-arrangements.php, 现在我制作了4个类似的文件,因为我需要重新组织安排模板:

总有一天我会满足的。php内容两天。php内容三天。php内容四天。php现在。。。我需要的是根据rmt\\U nights字段中选择的内容获取一些内容模板。

如果选择了“无夜”content-oneday.php 应通过get\\u tempalte\\u part调用content-twoday.php 应该通过get_tempalte_part调用content-threeday.php 应通过get\\u tempalte\\u part调用content-fourday.php 应通过get\\u tempalte\\u part调用我在不同版本中尝试了类似的方法,但显然是错误的:

<?php if ( get_post_meta($post->ID, \'rtm_nights\', \'3 nights\') ) ; ?>
<?php get_template_part( \'content\', \'fourday\' ); ?>
<?php if ( get_post_meta($post->ID, \'rtm_nights\', \'2 nights\') ) ; ?>
<?php get_template_part( \'content\', \'threeday\' );  ?>
<?php if ( get_post_meta($post->ID, \'rtm_nights\', \'1 night\') ) ; ?>
<?php get_template_part( \'content\', \'twoday\' );  ?>
<?php if ( get_post_meta($post->ID, \'rtm_nights\', \'no nights\') ) ; ?>
<?php get_template_part( \'content\', \'oneday\' );  ?>
<?php endif; ?>

2 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

这是一个PHP问题,与WordPress无关,但我的回答是因为您正在处理代码。只要让它变得简单,你也可以经历它。:)

<?php
/**
*  get your custom field data and store into a variable
*  to make it easy - nothing else
*/
$my_custom_field = get_post_meta( $post->ID, \'rtm_nights\', $single=true );

if ( $my_custom_field == \'3 nights\' ) {
    get_template_part( \'content\', \'fourday\' );
} else if ( $my_custom_field == \'2 nights\' ) {
    get_template_part( \'content\', \'threeday\' );
} else if ( $my_custom_field == \'1 night\' ) {
    get_template_part( \'content\', \'twoday\' );
} else if ( $my_custom_field == \'no nights\') {
    get_template_part( \'content\', \'oneday\' );
} //endif
?>
编辑,你缺少一些关于get_post_meta() 语法:

<?php get_post_meta( $post_id, $key, $single ); ?>
无法通过它检查值。:)

SO网友:Lucio Coire Galibone

这是一个语法问题,不是真正的wordpress问题。但是:

根据get_post_meta() Function Reference, 第三个参数用于

返回单个结果,作为string

如果是的话true 不要做比较。

您必须获取自定义字段并检查其值。

if ( get_post_meta($post->ID, \'rtm_nights\') == \'3 nights\' ) {
  get_template_part( \'content\', \'fourday\' );
} else if ( get_post_meta($post->ID, \'rtm_nights\') == \'2 nights\' ) {
  get_template_part( \'content\', \'threeday\' );
} else if ( get_post_meta($post->ID, \'rtm_nights\') == \'1 nights\' ) {
  get_template_part( \'content\', \'twoday\' );
} else if ( get_post_meta($post->ID, \'rtm_nights\') == \'no nights\' ) {
  get_template_part( \'content\', \'oneday\' );
} 

结束

相关推荐