显示当前帖子类型的所有帖子标题

时间:2014-09-29 作者:wpuser

我有一个自定义的帖子类型,叫做press.

我在模板上single-press.php

我想获得名为“press”的自定义帖子类型的帖子标题。

这是我的密码,请引导我好吗?

    <?php function all_posts_custom_posts( $query ) {
            $post_type =  $query->query_vars[\'post_type\'];

            if ( \'press\' == $post_type ){
                    $query->query_vars[\'posts_per_page\'] = -1;
                    return;
            }
    } 
    add_action(\'pre_get_posts\', \'all_posts_custom_posts\',1); ?>
并通过添加class 对它。

4 个回复
SO网友:Domain

当您打开时,“按一下”。php”,这是一个单一的“按”后类型页面。根据您的问题,您似乎希望显示所有“新闻”帖子的存档,以及突出显示的当前帖子。

由于我们在单个“按”帖子页面上,因此无需检查帖子类型。

我们可以根据您的需要,在结构上进行修改,直接添加以下回路,

global $post;
$post_args = array(
        \'post_type\' => \'press\',
        \'post_status\' => \'publish\'
        );
$press_posts = get_posts($post_args);   
if(!empty($press_posts)){
foreach($pres_posts as $single_post){
    ?>
    <a href="<?php echo get_permalink($post_id); ?>" class="<?php if($single_post->ID == $post->ID ) echo \'wdm-current-post\'; ?>"><?php echo $single_post->post_title; ?></a><?php
}
}
因此,现在我们为当前帖子提供了一个类“wdm current post”。现在将列出所有帖子,并在列表中突出显示当前帖子。

SO网友:HeroWeb512

通过使用wp查询,您可以根据需要获取自定义帖子类型的所有帖子标题及其永久链接。

当我将在列表中获取自定义帖子标题时,您要在其中显示所有帖子标题及其永久链接的代码

  <ul class="dropdown-menu scrollable-menu" aria-labelledby="dropdownspecialist">
      <?php 
       global $loop;
       $all_posts = array( \'post_type\' => \'press\', \'posts_per_page\' => -1 );
       $loop = new WP_Query( $all_posts );
        if($loop->have_posts()){
        while($loop->have_posts()){
            $loop->the_post();
        ?>
        <li><a href="<?php the_permalink(); ?>" class="cat_link"><?php the_title(); ?></a></li>
        <?php
        }
        }
        wp_reset_query();
        ?>
  </ul>
当您要求突出显示列表中的活动链接时,可以使用一些jQuery

 jQuery(document).ready(function(){
   var current = location.pathname;
    jQuery(\'.cat_link\').each(function(){
    var jQuerythis = jQuery(this);
    // if the current path is like this link, make it active
    // indexOf(something) if the value never occurs it returns -1 and in this condition if indexOf(something) !== -1 means result !== -1 or results exists then add class active.
    if(jQuerythis.attr(\'href\').indexOf(current) !== -1){
        jQuerythis.addClass(\'active\');
    }
  });
});
就是这样。

SO网友:dalveer

#您可以使用此WP\\U查询

$arg = new WP_Query( array( \'post_type\' => \'postypename\') ); 

while ( $arg->have_posts() ) : $arg->the_post();

   the_title(); 


endwhile;

SO网友:mrwweb

您所描述的是所谓的Post-Type归档,它是由WordPress提供的。例如,它应该显示在您的站点上。com公司/press, 假设你没有用rewrite 在您的register_post_type() post类型的函数。

在该地址,查询将自动显示“press”类型的所有帖子但是,如果要在不分页的情况下显示所有这些内容,则需要使用pre_get_posts:

function wpse162905_modify_query( $query ) {
    if( !is_admin() && is_main_query() && is_post_type_archive( \'press\' ) ) {
        $query->set( \'posts_per_page\', -1 );
    }
}
add_action( \'pre_get_posts\', \'wpse162905_modify_query\' );
最后,您需要修改页面模板,以仅将标题显示为链接。为此,您将修改archive-press.php 主题文件。如图所示Template Hierarchy codex page, 您可以看到,这是控制post类型存档的模板。该文件最基本的内容可能包括:

<?php if( have_posts() ) : ?>
    <ul>
        <?php while( have_posts() ) : the_post(); ?>
            <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></li>
        <?php endwhile; ?>
    </ul>
<?php endif; ?>

结束

相关推荐