编写这个PHP块而不是列出每个数字的最佳方法是什么?
<?php $name1 = get_post_meta(get_the_ID(), 'ch_client_name1', TRUE);
$name2 = get_post_meta(get_the_ID(), 'ch_client_name2', TRUE);
$name3 = get_post_meta(get_the_ID(), 'ch_client_name3', TRUE);
$name4 = get_post_meta(get_the_ID(), 'ch_client_name4', TRUE);
$name5 = get_post_meta(get_the_ID(), 'ch_client_name5', TRUE);
?>
这是我将要使用的HTML。 所以我希望列表显示5个名称中的每一个。
<li id="<?php the_ID(); ?>" ">
<?php echo $name1; ?>
</li>
答案 0 :(得分:2)
这将有效:
for($i=1;$i<=5;$i++){
${'name'.$i} = get_post_meta(get_the_ID(), 'ch_client_name'.$i, TRUE);
}
答案 1 :(得分:1)
$names = array('ch_client_name1', 'ch_client_name2', 'ch_client_name3', 'ch_client_name4', 'ch_client_name5' )
foreach($names as $name) {
$realname = get_post_meta(get_the_ID()), $name, TRUE);
echo '<li id="'. theID() .'">'. $realname .'</li>';
}
答案 2 :(得分:0)
你可以这样做:
<?php
for($i = 1; $i <= 5; $i++) {
$nameN = "name{$i}";
$$nameN = get_post_meta(get_the_ID(), "ch_client_name{$i}", TRUE);
// or $name[$i], if you can
?>
<li id="<?php the_ID(); ?>">
<?php echo $$nameN; ?>
</li>
<?php
}
答案 3 :(得分:0)
<?php
$numberOfNames=5;
$names = array();
for($i=1; $i<=$numberOfNames; $i++)
$names[] = get_post_meta(get_the_ID(), 'ch_client_name'.$i, TRUE);
foreach($names as $k=>$name){
echo "<li id=\"".($k+1)."\">\n$name\n</li>";
}
?>
答案 4 :(得分:0)
您甚至可以考虑使用此功能,即可立即获取所有发布的元(自定义)字段:
$meta = get_post_custom( $post_id = get_the_ID() );
for( $i = 1; $i <= 5; $i++ )
echo '<li id="client-'.$post_id.'-'.$i.'">'.$meta["ch_client_name{$i}"].'</li>';
注意我在问到这个问题时也修正了一个错误:
<li id="<?php the_ID(); ?>" ">
我修正的问题是:
"client-{$post_id}-"
为前缀)和the_ID()
返回五(5)个结果中每个结果的帖子ID,而不是具有@id属性所需的唯一值。