我正在创建一个目录样式的页面模板,该模板使用Wordpress中的自定义元字段,用于在页面上生成多达10个目录列表。
下面的代码在这方面工作得很好,只有一个例外。如果我的一个目录页面只有5个列表,那么即使没有值,也会显示清单6-10的代码。
<div class="listing">
<h3 class="listing-title"><?php $values = get_post_custom_values("listing_heading_10");
echo $values[0]; ?></h3>
<div class="listing-body">
<p><?php $values = get_post_custom_values("listing_description_10"); echo $values[0]; ?> </p>
</div><p class="listing-footer"><?php $values = get_post_custom_values("listing_url_10");
echo $values[0]; ?></p>
我需要添加什么才能使代码仅在为该实例填充自定义元字段时显示。
换句话说,我在寻找一条规则,上面写着:
如果存在值,则显示完整目录列表(即listing\\u heading\\u 10、listing\\u description\\u 10和listing\\u url\\u 10)
如果这些值均不存在,则不显示任何内容
如果您对此有任何帮助或建议,我们将不胜感激。
SO网友:Chip Bennett
最简单的方法是添加一个简单的条件:
$values = get_post_custom_values("listing_heading_10");
if ( $values ) { ?>
<h3 class="listing-title"><?php echo $values[0]; ?></h3>
<?php }
也就是说,有什么理由不能将输出代码放入
foreach
环
e、 g。
$values = get_post_custom_values( \'some_value\' );
foreach ( $values as $value ) {
// echo output content here
}
将自定义的元值放入数组中可能会很有帮助,以便在它们存在的情况下进行循环。因此,不是:
$values = get_post_custom_values("listing_heading_10")
。。。您可以:
$values get_post_custom_values( \'listing_heading\' )
而不是
$values
。。。您可以输出:
$values[10]
等等。
SO网友:Chris
因此,我尝试使用您关于条件的上述建议(请参阅下面的代码),但我仍然存在一个问题,即如果没有填充元框,那么如果页面的列表少于10个,代码在源代码中仍然可见。我做错什么了吗?
我也喜欢在foreach循环中输出代码并使用数组的想法,但老实说,我对编程非常陌生,不知道该如何编写。
再次感谢你的帮助,我真的很感激。
<div class="listing">
<?php $values = get_post_custom_values("listing_heading_10");
if ( $values ); ?>
<h3 class="listing-title"><?php echo $values[0]; ?></h3>
<?php $values = get_post_custom_values("listing_description_10");
if ( $values ); ?>
<div class="listing-body"><p><?php echo $values[0]; ?></p></div>
<?php $values = get_post_custom_values("listing_url_10");
if ( $values ); ?>
<p class="listing-footer"><?php echo $values[0]; ?>
</p>
</div>
<?php }
SO网友:t31os
如果只需要第一个值,则无需获取所有值,只需从数组中提取一个值即可。
Custom Fields - Function Reference
您应该使用get_post_meta
而是将第三个参数设置为true(对于单个值)。
例如:。
get_post_meta( $post->ID, \'your-field-name\', true );
然后,不需要一直引用数组中的第一个项,例如。
$arr[0]
.. 您也不需要循环来迭代只需要单个值的数据。
get_post_meta
如果没有数据,则返回空数组/字符串(字符串/数组取决于您是提取多个还是单个,即为第三个参数设置了什么),但字段也可能有空值,因此这应该包括被设置但为空的字段,或者不同时存在的字段。
$field = get_post_meta( $post->ID, \'your-field-name\', true );
if( !empty( $field ) ) {
// Do whatever you like when the field has a value..
}