好的,第一步是创建一个页面模板,这是最简单的部分,这里不需要查询操作,您不需要更改查询,只需查看已经在查询中的页面,所以这是创建基本循环的一个简单例子,就像这样。。。(注意,我在代码顶部放置了一个特殊的页面模板注释)。
NOTE: 将此文件保存在主题文件夹中时,请确保不要为其指定主题模板文件的名称,因此不要调用它category.php 或archive.php(WordPress主题固有的任何文件名),而是使用一些独特的内容,例如。customfields-template.php (或任何你喜欢的)。
<?php
/**
* Template Name: CustomField Table
*/
get_header();
?>
<div id="container">
<div id="content">
<?php if( have_posts() ) : ?>
<?php while( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php
// Array of custom fields to get(so enter your applicable field keys here)
$fields = array( \'field-one\', \'field-two\' );
// Array to hold data
$custom_fields = array();
// Loop over keys and fetch post meta for each, store into new array
foreach( $fields as $custom_field_key )
$custom_fields[$custom_field_key] = get_post_meta( $post->ID, $custom_field_key, true );
// Filter out any empty / false values
$custom_fields = array_filter( $custom_fields );
// If we have custom field data
if( !empty( $custom_fields ) )
$c = 0;
?>
<table>
<thead>
<tr>
<th>Field</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<?php foreach( $custom_fields as $field_name => $field_value ) : $c++; ?>
<tr<?php echo ( $c % 2 == 0 ) ? \' class="alt"\' : \'\' ; ?>>
<td><?php echo $field_name ?></td>
<td><?php echo $field_value ?></td>
</tr>
<?php endforeach; ?>
</tbody>
<tfoot>
<tr>
<th>Field</th>
<th>Value</th>
</tr>
</tfoot>
</table>
<div <?php post_class(); ?>><?php the_content(); ?></div>
<?php endwhile; ?>
<?php endif; ?>
</div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
由于您正在寻找特定的键并期望奇异值,因此我认为最简单和最合适的函数是
get_post_meta
, 此函数可以为单个自定义字段键选择多个或单个值(并自动排除您使用其他方法获得的私有元键
get_post_custom_
功能。
有关这些函数的更多信息,请参见此处
http://codex.wordpress.org/Custom_Fields#Function_Reference
创建一个简单的自定义字段键数组以从中选择数据,然后循环调用它们get_post_meta
每次迭代。收集元数据并将其放入新的数组中,以便以后可以轻松过滤空/假结果(而不是重复if( $var )
或if(!empty())
电话)。
接下来检查新数组是否有一些数据,输出一个表并在新数组上循环以构建数据行。
您唯一需要更改的是这一行(这些是我的测试字段名称)。。
$fields = array( \'field-one\', \'field-two\' );
例如,要获取带有关键字、名称、性别、职务和描述的自定义字段。。
$fields = array( \'name\', \'gender\', \'job\', \'description\' );
NOTES:
- 我冒昧地向表行添加了交替类,我假设您希望帖子标题和内容(如果不需要,请删除)HTML标记基于二十个主题,如果您的主题使用不同的标记,则需要根据需要更新HTML(或者您可以将我链接到您的一个网页,我将为您重构示例代码)
- 我不确定您希望如何在表中显示数据,因此如果您对如何在表中布局数据有不同的想法,请告诉我,我将为您重构代码如果您对代码有任何疑问,请告诉我。:)