Custom Page Template

时间:2011-02-17 作者:Ambo100

有人能帮我制作一个自定义页面模板吗?

我想有一个基本页面(带有边栏、页眉和页脚)和一个数据表。我想从自定义字段中获取数据。类似这样:

名称:(名称键)

位置:(位置键)等。。。

1 个回复
最合适的回答,由SO网友:t31os 整理而成

好的,第一步是创建一个页面模板,这是最简单的部分,这里不需要查询操作,您不需要更改查询,只需查看已经在查询中的页面,所以这是创建基本循环的一个简单例子,就像这样。。。(注意,我在代码顶部放置了一个特殊的页面模板注释)。

NOTE: 将此文件保存在主题文件夹中时,请确保不要为其指定主题模板文件的名称,因此不要调用它category.phparchive.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(或者您可以将我链接到您的一个网页,我将为您重构示例代码)
  • 我不确定您希望如何在表中显示数据,因此如果您对如何在表中布局数据有不同的想法,请告诉我,我将为您重构代码
结束

相关推荐

Custom theme - pages in menu

我很高兴有机会成为这个社区的一员。最近我决定开始学习wordpress和主题构建,所以这是我在这里的第一篇帖子。我在网上阅读了一些关于如何构建自定义主题的教程。我的问题是,如何构建自定义菜单?例如,我在psd上有模板,我将其切片,然后我想将其集成到wordpress上。我支持先构建页面。那么,如何使用自定义css/xhtml构建菜单,使每个链接都指向我创建的页面?也许描述不清楚,但我想你明白我的意思。提前感谢。