我一直在将各种示例的点点滴滴拼凑在一起,但是似乎无法解决这个问题。

我有常规的博客文章(新闻),我希望其显示在最近的顶部,然后是我希望在新闻下面分组的自定义帖子类型(企业)。 我正在使用Sage,这是我的第一个主题。

到目前为止,这是我的初学者代码:

<?php get_template_part('templates/page', 'header'); ?>

    <?php if (!have_posts()) : ?>
        <div class="alert alert-warning">
            <?php _e('Sorry, no results were found.', 'sage'); ?>
        </div>
        <?php get_search_form(); ?>
            <?php endif; ?>

                <?php if ( have_posts() ) : ?>
                    <?php while ( have_posts() ) : the_post(); ?>
                        <?php $post_type = get_post_type_object( get_post_type() ); ?>
                            <?php $type = get_post_type(); ?>

                                <?php if ($type == 'post') { ?>
                                    <h2>News Results</h2>
                                    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                                        <div>
                                            <a href="<?php the_permalink(); ?>">
                                                <?php $cats=get_the_category(); ?>
                                                    <?php echo $cats[0]->cat_name; ?>

                                            </a>
                                        </div>
                                        <div>
                                            <h3><?php the_title(); ?></h3>

                                            <div class="result-excerpt">
                                                <?php if ( has_excerpt( $post->ID ) ) {
              echo the_excerpt(); 
            } else {
              echo get_excerpt(); 
            } ?>
                                            </div>

                                        </div>
                                    </article>

                                    <?php } elseif ($type == 'business') { ?>

                                        <h2>Business Results</h2>
                                        <article <?php post_class(); ?>>
                                            <header>
                                                <h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                                                <?php if (get_post_type() === 'post') { get_template_part('templates/entry-meta'); } ?>
                                            </header>
                                            <div class="entry-summary">
                                                <?php the_excerpt(); ?>
                                            </div>
                                            <a href="<?php the_permalink(); ?>">
                                                <?php $cats=get_the_category(); ?>
                                                    <?php echo $cats[0]->cat_name; ?> -
                                                        <?php the_title(); ?>
                                            </a>
                                            <h3><?php echo the_sub_field('title'); ?></h3>
                                            <?php if( get_sub_field('content') ): ?>
                                                <div class="result-excerpt">
                                                    <?php echo custom_field_excerpt(); ?>
                                                </div>
                                                <?php endif; ?>
                                        </article>

                                        <?php } ?>

                                            <?php endwhile; ?>
                                                <?php endif; ?>

#1楼 票数:0

我认为问题在于您正在按顺序遍历每个帖子,并决定如何处理它。 无论结果如何,这都会导致输出与输入的顺序相同。

我说的PHP不太流利,但是我认为发生的事情是该算法的内容如下:

-for each post:
  - if it's a 'post', display it like «this»
  - otherwise, if it's a 'business', display it instead like «this»

我认为您希望有两个循环,如下所示:

-for each post:
  - if it's a 'post', display it like «this»
-for each post:
  - if it's a 'business', display it like «this»

不幸的是,我没有看到明显的引用可以存储在数组中并进行循环。 我真的不知道贤哲人是如何工作的,所以我不得不将实现留给您。 我的最佳猜测-我衷心怀疑这是否可行-如下:

<?php get_template_part('templates/page', 'header'); ?>

<?php if (!have_posts()) : ?>
    <div class="alert alert-warning">
        <?php _e('Sorry, no results were found.', 'sage'); ?>
    </div>
    <?php get_search_form(); ?>
        <?php endif; ?>

            <?php if ( have_posts() ) : ?>
                <?php while ( have_posts() ) : the_post(); ?>
                    <?php $post_type = get_post_type_object( get_post_type() ); ?>
                        <?php $type = get_post_type(); ?>

                            <?php if ($type == 'post') { ?>
                                <h2>News Results</h2>
                                <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                                    <div>
                                        <a href="<?php the_permalink(); ?>">
                                            <?php $cats=get_the_category(); ?>
                                                <?php echo $cats[0]->cat_name; ?>

                                        </a>
                                    </div>
                                    <div>
                                        <h3><?php the_title(); ?></h3>

                                        <div class="result-excerpt">
                                            <?php if ( has_excerpt( $post->ID ) ) {
          echo the_excerpt(); 
        } else {
          echo get_excerpt(); 
        } ?>
                                        </div>

                                    </div>
                                </article>

                                        <?php endwhile; ?>
                                            <?php endif; ?>







        <?php if (!have_posts()) : ?>
            <div class="alert alert-warning">
                <?php _e('Sorry, no results were found.', 'sage'); ?>
            </div>
            <?php get_search_form(); ?>
                <?php endif; ?>

                    <?php if ( have_posts() ) : ?>
                        <?php while ( have_posts() ) : the_post(); ?>
                            <?php $post_type = get_post_type_object( get_post_type() ); ?>
                                <?php $type = get_post_type(); ?>

                                    <?php if ($type == 'business') { ?>

                                            <h2>Business Results</h2>
                                            <article <?php post_class(); ?>>
                                                <header>
                                                    <h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                                                    <?php if (get_post_type() === 'post') { get_template_part('templates/entry-meta'); } ?>
                                                </header>
                                                <div class="entry-summary">
                                                    <?php the_excerpt(); ?>
                                                </div>
                                                <a href="<?php the_permalink(); ?>">
                                                    <?php $cats=get_the_category(); ?>
                                                        <?php echo $cats[0]->cat_name; ?> -
                                                            <?php the_title(); ?>
                                                </a>
                                                <h3><?php echo the_sub_field('title'); ?></h3>
                                                <?php if( get_sub_field('content') ): ?>
                                                    <div class="result-excerpt">
                                                        <?php echo custom_field_excerpt(); ?>
                                                    </div>
                                                    <?php endif; ?>
                                            </article>

                                            <?php } ?>

                                                <?php endwhile; ?>
                                                    <?php endif; ?>

祝好运!

  ask by James translate from so

未解决问题?本站智能推荐:

1回复

自定义帖子类型搜索

我正在按帖子标题建立自定义帖子类型搜索。 我有一个帖子类型“ produto”和两个帖子,标题为“ Produto 1”和“ Produto teste 2”。 问题是,当我在搜索输入中仅输入“ f”时,结果是两个帖子,而不是一个帖子。 我正在尝试使用arg波纹管,但未成功。
1回复

页面内的自定义帖子类型搜索结果

下面的表格给我确切的结果。 我有一个产品自定义帖子,其结果需要在以下形式或以下形式 标签。 它没有相应地显示结果。 我的自定义邮政编码add_action('init','product_register'); 我的搜索结果代码 请告知以显示确切结果。
1回复

Wordpress自定义帖子类型搜索结果页面

我设置了一个自定义搜索表单来搜索和显示我的自定义帖子类型的结果。 表格是: 在我的search.php中,如果内容类型是资源库,我想将人们引导到名为search-resource-library.php的自定义搜索php文件。 所以我把它放在search.php页面的顶部:
1回复

WordPress-仅在自定义帖子类型中搜索

我有一个带有博客的网站和一个用于视频(名为video)的自定义post_type。 以及附加的各种分类法(视频类别,视频标签等) 我正在尝试建立一个搜索功能,以仅搜索视频分类法,而另一个仅搜索博客分类法。 这些页面的每个页面都会有一个搜索框,以缩小搜索结果的范围。 到目前为止,这
2回复

WordPress 自定义帖子类型未显示在搜索结果中

我在 WordPress 中自定义帖子类型(测验)和搜索有问题。 自定义帖子类型未显示在我的搜索结果页面中。 我的搜索结果中仅显示默认帖子内容。 以下是我使用的代码 functions.php函数 create_posttype() { functions.php 中的附加代码 搜索.
1回复

Wordpress自定义帖子类型未显示在搜索中

我正在尝试获取自定义帖子类型和高级自定义字段,以显示在搜索结果中。 目前,它仅搜索默认帖子。 我已经使用此插件创建了自定义帖子类型:“ 自定义帖子类型”用户界面 我正在使用高级自定义字段插件: 高级自定义字段 这是我的代码: search.php searchf
1回复

如何显示来自自定义帖子类型的选定类别的自定义搜索结果?

我有一个网站,有一个博客和一个名为proyecto的自定义帖子类型。 它们位于mywebpage.com/blog和mywebpage.com/portafolio 。每个页面都有一个搜索字段和类别下拉选择器。 每个页面应该只搜索和过滤它们各自的帖子。 此外,他们每个人都有一个自定义的搜索结果布
2回复

自定义搜索产品自定义帖子类型

我准备了一个自定义的产品帖子。 我想包含一个带有很少搜索过滤器的表单。 当我第一次进行搜索时。 我的产品模板不同,并且希望在页面或特定div中显示其结果。 这怎么可能。 我有点困惑。 以下是我的表单字段。