如何让某一类别中的所有帖子都“无粘性”?

时间:2013-08-03 作者:gburning

前几天我发布了this 问题现在我想知道我如何做同样的事情,除了这次不让不粘帖变得粘帖,代码应该让那些已经标记为粘帖(在指定类别中)的帖子变得不粘帖。

我希望我的问题很清楚。

谢谢你的帮助!

编辑:事实上,我找到了一种几乎可以让它工作的方法。我对原始代码所做的更改是让它检查帖子是否已经有粘性(而不是检查它是否有粘性)。然后,我在代码执行的实际操作中添加了一个“unset”。

无论如何,下面是经过修改的代码:

/**
 * Un-sticky all posts in category 16
 */

add_action( \'save_post\', \'mark_post_unsticky\' );
function mark_post_unsticky( $post_id ) {

    if ( !wp_is_post_revision( $post_id ) && isset($_POST[\'sticky\']) &&
        in_category(\'16\',$post_id) ) {

        unset($_POST[\'sticky\']);        
    }
}
现在唯一的问题是,只有当我手动编辑文章并再次发布时,才会发生更改。所以基本上,我需要一个新的“触发器”,谁能帮我一下吗?谢谢

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我认为问题是,有些帖子已经设置为粘滞,你不想重新浏览并重新保存它们。在这种情况下,您只需删除帖子IDs从“粘滞”选项。

function unset_sticky_for_category($cat) {
  $sticky = get_option( \'sticky_posts\' );
  $sp = new WP_Query(
    array(
      \'fields\' => \'ids\',
      \'post__in\' => $sticky,
      \'cat\' => $cat // your category to un-sticky
    )
  );

  if (!empty($sp->posts)) {
    $sticky = array_diff($sticky,$sp->posts);
  }

  update_option(\'sticky_posts\',$sticky);
}
unset_sticky_for_category(16);
只要上面的代码阻止所选类别中的新帖子被设置为“粘滞”,您应该只需要运行一次。

结束

相关推荐

编辑“Kahi‘s Highlight Used Categories”插件代码--在帖子页面高亮显示父子类别

我试图突出显示(使用css)所选帖子中使用的子类别和父类别。因此,我找到了这个插件“Kahi’s Highlight Used Categories”。插件网站:http://kahi.cz/wordpress/highlight-used-categories-plugin/它的作用。。。它将“used cat”类和“used cat parent”类分别添加到子类别和主类别中进行样式化。问题是:我的网站(http://www.mpn.p.ht/wp_br2/), 有三大类:“男性”(意为男性)、“女性