加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – WordPress:自定义循环来排除在widget $args内分配的帖子

发布时间:2020-12-13 16:37:12 所属栏目:PHP教程 来源:网络整理
导读:在widget.php中注册widget以显示定义的post_id元: class featured_widget extends WP_Widget{ /** * Display front-end contents. */ function widget($args,$instance) { $post = get_post($instance['post_id']);...} } 我想从我的循环中排除分配的post p
在widget.php中注册widget以显示定义的post_id元:
class featured_widget extends WP_Widget
{
  /**
     * Display front-end contents.
     */
    function widget($args,$instance)
    {
        $post = get_post($instance['post_id']);
...
}

}

我想从我的循环中排除分配的post post $post:

if (have_posts()) : while (have_posts()) : the_post();
1.如何获取post_id值?

WordPress将选项表中的小部件数据存储为option_name是widget _ {$id_base}.例如,当您构建这样的窗口部件时:

function __construct() {
    parent::__construct('so37244516-widget',__('A label','text-domain'),[
        'classname'   => 'so37244516-widget-class','description' => __('Some descriptions','text-domain')
    ]);
}

option_name应该是widget_so37244516-widget.然后检索小部件数据,我们只需要使用:

$data = get_option('widget_so37244516-widget');

但是,因为小部件可以有多个实例,所以$data是具有不可预测的键的关联数组. (每次将窗口小部件拖动到侧边栏并保存时,将返回窗口小部件的新实例).

因此,如果您的站点中只有一个小部件的实例,$data [2] [‘post_id’]是我们需要的值.如果有多个实例,我们需要循环访问$data,比较一些键和值来找出正确的值.和往常一样,var_dump($data)非常有用.

2.从循环中排除post_id的帖子.

假设$exclude_id是我们从步骤1得到的值.

>你正在做一个自定义循环,使用@ hemnath_mouli的方法:

$query = new WP_Query([
    'post__not_in' => [$exclude_id]
]);

if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : $query->the_post();
        // Do loop.
    endwhile;
    wp_reset_query(); // Must have.
else :
    // Do something.
endif;

记得做wp_reset_query().

>你正在使用默认循环,在你的functions.php中尝试@ Deepti_chipdey的方法:

add_action('pre_get_posts',function($query)
{
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set('post__not_in',[$exclude_id]);
    }
});

确保将is_home()更改为您的首选项页面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读