前几天我发布了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\']);
}
}
现在唯一的问题是,只有当我手动编辑文章并再次发布时,才会发生更改。所以基本上,我需要一个新的“触发器”,谁能帮我一下吗?谢谢
最合适的回答,由SO网友:s_ha_dum 整理而成
我认为问题是,有些帖子已经设置为粘滞,你不想重新浏览并重新保存它们。在这种情况下,您只需删除帖子ID
s从“粘滞”选项。
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);
只要上面的代码阻止所选类别中的新帖子被设置为“粘滞”,您应该只需要运行一次。