自定义帖子类型的自定义单页,wordpress

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21980266/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 19:29:19  来源:igfitidea点击:

Custom single page for custom post type, wordpress

wordpressposts

提问by ajmajmajma

I've just figured out how to make custom post types and feed them out onto a page, I am wondering if I can change the single post pages for them?

我刚刚想出了如何制作自定义帖子类型并将它们提供到页面上,我想知道是否可以为它们更改单个帖子页面?

Can I just set up a single-news.phpfor example? If so, how would that PHP file be formatted and how does WordPress know to use that single-news.php file? I'm just looking to have them spit out the full article.

我可以设置一个single-news.php例子吗?如果是这样,该 PHP 文件将如何格式化以及 WordPress 如何知道使用它single-news.php file?我只是想让他们吐出完整的文章。

Thank you!!

谢谢!!

回答by Fred K

After you created the CPT, do this for showing single posts of your CPT:

创建 CPT 后,执行此操作以显示 CPT 的单个帖子:

  • Duplicate the single.phpfile in your template and rename it like single-{post_type}.php(eg. single-movie.php)
  • Flush the permalinks from WordPress
  • 复制single.php模板中的文件并将其重命名为 single-{post_type}.php(例如single-movie.php
  • 从 WordPress 刷新永久链接

You can get more details from this post

您可以从这篇文章中获得更多详细信息

  • Now if you want to show a list of CPT you can use get_posts()with args:

    $args = array( ... 'post_type' => 'movie' )

  • 现在,如果您想显示 CPT 列表,您可以将get_posts()与 args 一起使用:

    $args = array( ... 'post_type' => 'movie' )

回答by hitesh nagpal

Custom Post Type in wordpress. Basic four steps 

Step 1 : File Path location : theme/function.php in your theme

  Paste code in function.php (register custom post type )

  <?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 );
}
?>

Step 2: how can show wordpress custom post type in wordpress template page ?

第 2 步:如何在 wordpress 模板页面中显示 wordpress 自定义帖子类型?

  : you can show anywhere in template page like this :



<?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; ?>

Step 3: Create new template for show single post like this

第 3 步:创建新模板以显示这样的单个帖子

single-{custom post type name}.php or single-services.php

single-{自定义帖子类型名称}.php 或 single-services.php

Step 4: Paste code in single-services.php file

第 4 步:将代码粘贴到 single-services.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; ?>

This is custom post type example with single post page.

这是带有单个帖子页面的自定义帖子类型示例。

回答by Dinesh

for this purpose you can create the template file for your single-news.php page. and get your post as you want by wordpress query. for example your single-news.php page

为此,您可以为 single-news.php 页面创建模板文件。并根据需要通过 wordpress 查询获取您的帖子。例如你的 single-news.php 页面

<?php
//Template Name: Single News
?>

<?php
//get your content
$args = array('category' =>'9','posts_per_page'=> 3);
                        $myposts = get_posts( $args );
                        global $post;
                        foreach ( $myposts as $post ) : setup_postdata( $post ); ?> 

//go with your content

回答by Arvind Pal

Here are some urls u can idea about the creating custom post templates.

https://codex.wordpress.org/Post_Type_Templates
http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display
https://codex.wordpress.org/Post_Type_Templates

With the help of above urls u can get idea how you can create new templates for custom post types and custom taxonomy. I think this will help you.