创建自定义帖子类型的“单一”页面

时间:2012-04-26 作者:benhowdle89

好的,我安装了自定义Post-Type UI插件并创建了一个。然后我在上面添加了一个新帖子。在我的主题中,我有一段代码如下:

<?php 
    $loop = new WP_Query( array( 
        \'post_type\' => \'case studies\',   /* edit this line */
        \'posts_per_page\' => 15 ) );
?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>  

    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
        <?php the_post_thumbnail(\'thumbnail\'); ?>
    </a>

<?php endwhile; ?> 
现在,首先,如果我单击缩略图,我会在浏览器中看到一个错误,说它在重定向循环中,但第二,我想知道要查看这种自定义帖子类型的单个帖子需要创建哪些文件。以及在该文件中放置的内容。

4 个回复
SO网友:Dave Romsey

使用single-{posttype}.php 对于单个模板。此外,如果您在has_archive 参数设置为true, 然后您可以使用archive-{posttype}.php 对于存档模板,这将允许您跳过那里的查询,因为$wp_query 对象将已填充您的自定义帖子类型。

顺便说一句,你的post_type 这将是一个问题。

查看Template Hierarchy, 并考虑registering your CPTs using code 在插件中,而不是使用CPT UI插件。

SO网友:Brad Dalton

没有必要,因为WordPress将使用默认页面模板,但是您可以创建自定义页面模板single-cpt.php 文件,其中cpt是您的registered post type.

<?php

get_header(); ?>

<div id="main-content" class="main-content">

    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">
            <?php
                // Start the Loop.
                while ( have_posts() ) : the_post();

                    // Include the page content template.
                    get_template_part( \'content\', \'page\' );

                endwhile;
            ?>
        </div><!-- #content -->
    </div><!-- #primary -->
</div><!-- #main-content -->

<?php
get_sidebar();
get_footer();

SO网友:Starfs

你可以把这个写进你的单曲里。php文件(在循环中)并在if语句中回显所需的任何字段。

if($post_type == \'case_studies\') { // you may need this to be without spaces (machine name)

                echo \'<h1>\'.get_the_title().\' flavors</h1>\';

               // post id
             $post_id = get_the_ID();
              get_post_meta($post_id, \'custom_field_name\', true);


                <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a> 
                  <?php endwhile; ?>

 }
另一个选项是t0创建页面模板。复制你的单曲。php文件并将其重命名为case\\u studies。php。。在php标记的顶部添加:

<?php
/*
Template Name: Brand Output 04/12
*/
?>
然后在单个中添加相同的if语句。php循环,如上例所示。。。

SO网友:hitesh nagpal

在wordpress中自定义帖子类型。基本的四个步骤。步骤1:文件路径位置:主题/函数。主题中的php。在函数中粘贴代码。php(注册自定义帖子类型)

<?php

add_action( \'init\', \'custom_post_type_func\' );
function custom_post_type_func() {
    //posttypename = services
$labels = array(
\'name\' => _x( \'Services\', \'services\' ),
\'singular_name\' => _x( \'services\', \'services\' ),
\'add_new\' => _x( \'Add New\', \'services\' ),
\'add_new_item\' => _x( \'Add New services\', \'services\' ),
\'edit_item\' => _x( \'Edit services\', \'services\' ),
\'new_item\' => _x( \'New services\', \'services\' ),
\'view_item\' => _x( \'View services\', \'services\' ),
\'search_items\' => _x( \'Search services\', \'services\' ),
\'not_found\' => _x( \'No services found\', \'services\' ),
\'not_found_in_trash\' => _x( \'No services found in Trash\', \'services\' ),
\'parent_item_colon\' => _x( \'Parent services:\', \'services\' ),
\'menu_name\' => _x( \'Services\', \'services\' ),
);
$args = array(
\'labels\' => $labels,
\'hierarchical\' => true,
\'description\' => \'Hi, this is my custom post type.\',
\'supports\' => array( \'title\', \'editor\', \'excerpt\', \'author\', \'thumbnail\', \'trackbacks\', \'custom-fields\', \'comments\', \'revisions\', \'page-attributes\' ),
\'taxonomies\' => array( \'category\', \'post_tag\', \'page-category\' ),
\'public\' => true,
\'show_ui\' => true,
\'show_in_menu\' => true,
\'show_in_nav_menus\' => true,
\'publicly_queryable\' => true,
\'exclude_from_search\' => false,
\'has_archive\' => true,
\'query_var\' => true,
\'can_export\' => true,
\'rewrite\' => true,
\'capability_type\' => \'post\'
);
register_post_type( \'services\', $args );
}
?>
第二步:如何在wordpress模板页面中显示wordpress自定义帖子类型?

您可以在模板页面的任何位置显示以下内容:

<?php   $args = array( \'post_type\' => \'services\', \'posts_per_page\' => 20 );
            $loop = new WP_Query( $args );
            while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <div class="services-items">
            <?php the_title(); 
        if ( has_post_thumbnail( $post->ID ) ) {
        echo \'<a href="\' . get_permalink( $post->ID ) . \'" title="\' . esc_attr( $post->post_title ) . \'">\';
        echo get_the_post_thumbnail( $post->ID, \'thumbnail\' );
        echo \'</a>\'; }

?>
            </div>
    <?php endwhile; ?>
步骤3:创建新模板,以便像这样显示单个帖子

单一-{自定义帖子类型名称}。php或单个服务。php

步骤4:在单个服务中粘贴代码。php文件

 <?php /* The loop */ ?>
            <?php while ( have_posts() ) : the_post(); ?>
                <div class="main-post-div">
                <div class="single-page-post-heading">
                <h1><?php the_title(); ?></h1>
                </div>
                <div class="content-here">
                <?php  the_content();  ?>
                </div>
                <div class="comment-section-here"
                <?php //comments_template(); ?>
                </div>
                </div>

            <?php endwhile; ?>
这是一个带有单个贴子页面的自定义贴子类型示例。

结束

相关推荐