【问题标题】:Archive Page for Custom Post Type自定义帖子类型的存档页面
【发布时间】:2017-11-21 10:32:03
【问题描述】:

我创建了一个名为新闻的自定义帖子类型并添加了某些新闻。现在我想在存档页面中显示它。我在函数文件中添加了 'has_archive' => 'true'。 我的存档页面代码是:

<?php
        $args = array('post_type'   => 'news',
                      'post_status' => 'publish');

        $news=wp_get_recent_posts($args);
    ?>
        <div class="container  mc_tb_p">
                <h1>NEWS/RELEASES</h1>
                    <?php
                        foreach ($news as $row) 
                            {
                             $id       = $row['ID'];
                             $ntitle   = $row['post_title'];
                             $ncontent = $row['post_content'];
                             $ncontent = strip_tags($ncontent);
                              if (strlen($ncontent) > 100) 
                                  {
                                    $stringCut = substr($ncontent, 0, 200).'... <a href="'.get_permalink($id).'">Read More</a>';
                                  }
                              else{
                                    $stringCut = $row['post_content'];
                                  }
                            $ndate     = $row['post_date'];
                            $trim      = new DateTime($ndate);
                            $trimdate      = $trim->format('d-m-Y');
                            // var_dump($trimdate);
                    ?>
                <div class="news_releases">
                    <a href="<?php echo get_permalink($id)?>"><h3><?php echo $ntitle?></h3></a>
                        <h5><i>Published On:&nbsp;<?php echo $trimdate?></i></h5>
                            <p><?php echo $stringCut;?></p>
                </div>
                        <?php
                        }
                        ?>

        </div>

现在当我给出我的网址时:https//sitename/news ...它显示了第二条新闻的单页,没有别的,我已经尝试了一切,但似乎没有任何效果。请帮助

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    你有两个选择,
    1. 在当前活动主题文件夹中创建一个文件名为“archive-{post_type}.php”,并在该文件中使用以下代码,

    <?php if ( have_posts() ) : 
                while ( have_posts() ) : the_post(); ?>    
        <!-- do stuff ... -->
        <?php   endwhile; 
            endif; ?>
    

    参考:https://codex.wordpress.org/Post_Type_Templates


    2.创建自定义模板文件并使用以下代码,

    <?php
        $loop = new WP_Query( array( 'post_type' => 'posttypename', 'paged' => $paged ) );
        if ( $loop->have_posts() ) :
            while ( $loop->have_posts() ) : $loop->the_post(); ?>
                <div class="pindex">
                    <?php if ( has_post_thumbnail() ) { ?>
                        <div class="pimage">
                            <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
                        </div>
                    <?php } ?>
                </div>
            <?php endwhile;
            if (  $loop->max_num_pages > 1 ) : ?>
                <div id="nav-below" class="navigation">
                    <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Previous', 'domain' ) ); ?></div>
                    <div class="nav-next"><?php previous_posts_link( __( 'Next <span class="meta-nav">&rarr;</span>', 'domain' ) ); ?></div>
                </div>
            <?php endif;
        endif;
        wp_reset_postdata();
    ?>
    

    *posttypename - ypu 帖子类型名称

    【讨论】:

      【解决方案2】:
      add_action( 'init', 'create_post_type' );
      function create_post_type() {
          register_post_type( 'deals',
              array(
                  'labels' => array(
                      'name' => __( 'Deals' ),
                      'singular_name' => __( 'Deal' )
                  ),
              'public' => true,
              'has_archive' => true,
              )
          );
      }
      
      =>The best way to start would be to copy the code from your theme’s archive.php file and paste it in your archive-{posttype}.php file. Then start tweaking from there. You can style this archive file to your heart’s desire. A very basic template would look like this
      <?php
      get_header();
      if(have_posts()) : while(have_posts()) : the_post();
          the_title();
          echo '<div class="entry-content">';
          the_content();
          echo '</div>';
      endwhile; endif;
      get_footer();
      ?>
      

      参考:http://www.wpbeginner.com/wp-tutorials/how-to-create-a-custom-post-types-archive-page-in-wordpress/

      【讨论】:

      • 我尝试过这样做,但它没有按应有的方式工作!存在同样的问题。我正在使用 optional-framework-theme-master .. 是否与它相关
      • 我什至从列表中删除了存档页面,但在访问我的 url/news 时,它直接显示了我的第二条新闻的单页!!
      • 您可以正确检查数组中的所有 slug 和名称以及自定义帖子类型吗?
      • 对不起,我没看懂 qn 吗?
      【解决方案3】:

      与使用自定义帖子类型时最奇怪的路由错误一样:保存永久链接可以解决这个问题(至少对我来说是这样)

      只需转到设置/永久链接并点击保存

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-05
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 2018-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多