FaceWP寻呼自定义wp_Query

时间:2020-12-07 作者:rjdvsk

首先,概述我正在努力实现的目标。我正在建立一个资源中心,列出各种自定义帖子类型,由于FacetWP,它可以过滤/搜索。在此资产清单中,我插入一个;促销活动“;每第6个位置的post类型,因此是自定义查询,即:

add_filter(\'facetwp_query_args\', function ($query_args, $class) {

if (\'resource_library_parent\' == $class->ajax_params[\'template\']) {
    // promos query
    $promos = get_posts(array(
        \'posts_per_page\' => -1,
        \'post_type\'      => \'promo\',
        \'facetwp\'        => false,
        \'orderby\'        => \'menu_order\'
    ));

    // assets query
    $assets = get_posts(array(
        \'posts_per_page\' => -1,
        \'post_type\'      => array(\'report\', \'ebook\', \'whitepaper\', \'casestudy\', \'webinar\', \'tool\', \'infographic\'),
        \'post_status\'    => \'publish\',
        \'has_password\'   => false,
        \'facetwp\'        => false,
        \'orderby\'        => \'date\',
        \'tax_query\'      => array(array(
            \'taxonomy\'   => \'tag\',
            \'field\'      => \'slug\',
            \'terms\'      => \'hide-me\',
            \'operator\'   => \'NOT IN\'
        ))
    ));

    $x = 6;

    foreach ($assets as $num => $asset) {
        if (($num + 1) % $x == 0) {
            if (isset($promos[($num + 1) / $x - 1])) {
                array_splice($assets, $num, 0, array($promos[($num + 1) / $x - 1]));
            }
        }
    }

    foreach ($assets as $asset) {
        $posts_id[] = $asset->ID;
    }

    $query_args[\'post_type\'] = array(\'report\', \'ebook\', \'whitepaper\', \'casestudy\', \'webinar\', \'tool\', \'infographic\', \'promo\');
    $query_args[\'post__in\'] = $posts_id;
    $query_args[\'orderby\'] = \'post__in\';
    $query_args[\'posts_per_page\'] = 12;
}
return $query_args;
}, 10, 2);
这在页面加载时非常有效。

但是单击分页(使用寻呼机方面类型)会导致第二页的结果缺少下一页;促销活动“;位置18。刷新第二页会导致促销显示在正确的位置,即总数的第6或18位。单击返回到第一页,将显示全部3“;促销活动“;在显示帖子时,再次刷新可以修复排序。

这让我左右为难,毫无疑问,这与寻呼机或我在错误的地方更改查询有关,但任何提示或想法都是非常受欢迎的。

您可以在此处看到此操作的演示:https://staging-xucobuce.kinsta.cloud/resource-center

1 个回复
SO网友:Justin Roy

我知道这可能太晚了,但您需要用<div class="facetwp-template"></div>. 不过,代码的facet过滤器应该位于这个div容器之外。

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post