通过用户ID获取同一用户的所有粘性帖子

时间:2013-05-15 作者:Goran Jakovljevic

所以我需要获得每个用户的粘性帖子数量,并将其与一个变量进行比较。我设法做到了这一点,但我想知道这是不是正确的方法。

 //Retrive all sticky posts ID
        $sticks = $wpdb->get_results("SELECT * FROM $wpdb->options WHERE option_name = \'sticky_posts\'");
        $stickies = unserialize( $sticks[0]->option_value ); //array with the IDs of sticky posts
        // print_r($stickies);
        // Get user id from sticky post ID
        $i = 0;
        foreach ($stickies as $sticki) {
            $post_meta = get_post($sticki);
if($post_meta->post_author == $current_user->ID && $post_meta->post_status != \'trash\' && strtotime($post_meta->post_date) > strtotime(\'-30 days\') ) { $i++; }
        }
$i是该用户的粘性帖子数。因此,我所做的是循环遍历所有粘性帖子,为每个粘性帖子获取帖子元,并通过帖子元获取帖子作者,将其与当前用户id进行比较。

1 个回复
SO网友:Subharanjan

将此函数复制并粘贴到函数中。currenttheme下的php文件。

// Create a new filtering function that will add where clause to the query
function filter_where( $where = \'\' ) {
  // posts in the last 30 days
  $where .= " AND post_date > \'" . date(\'Y-m-d\', strtotime(\'-30 days\')) . "\'";
  return $where;
}
将其粘贴到需要显示的位置。

$sticky = get_option( \'sticky_posts\' );
$args = array(
  \'numberposts\' => -1
  \'post__in\'  => $sticky,
  \'author\' => $current_user->ID
);
add_filter( \'posts_where\', \'filter_where\' );
$query = new WP_Query( $args );
remove_filter( \'posts_where\', \'filter_where\' );

// The Loop
while ( $the_query->have_posts() ) :
  $the_query->the_post();

  echo \'<li>\' . get_the_title() . \'</li>\';  

endwhile;

结束

相关推荐

使用$wpdb更新当前帖子

我有一个函数,可以在某个日期过期帖子,并向数据库中添加一个检查。现在,我希望能够“回收”那些具有新过期日期的帖子,但为了做到这一点,我需要删除\\u expiration\\u date\\u processed条目。下面的功能是否是实现这一点的最佳方法,尤其是在使用快速编辑更改多个帖子的状态的情况下?感谢您提供的任何见解。add_action(\'draft_to_published\',\'gcpl_draft_to_published\'); function gcpl_draft_to_