更改 WordPress Sticky Class 名称

Changing WordPress Sticky Class Name

不幸的是,Foundation 和 WordPress 都使用 "sticky" class。为了避免这种情况,我总是使用一个小函数将 WordPress 的 class 更改为 'wp-sticky'。但是,该功能现在似乎正在将 class 应用于每个 post(包括非粘性 posts)。

function remove_sticky_class($classes) {
    $classes = array_diff($classes, array("sticky"));
    $classes[] = 'wp-sticky';
    return $classes;
}
add_filter('post_class','remove_sticky_class');

关于如何仅更改粘性 class 名称(而不是将其应用于所有 post)有什么想法吗?

编辑:在粘性 post 上用 'wp-sticky' 替换 'sticky',但是,它也将其添加到非粘性 post 上。

它可能从来没有像最初预期的那样工作。问题是在将 'wp-sticky' 添加到数组之前,没有条件检查 'sticky' 是否在 $classes 数组中。

function remove_sticky_class( $classes ) {
    if ( in_array( 'sticky', $classes, true ) ) {
        $classes = array_diff($classes, array('sticky'));
        $classes[] = 'wp-sticky';
    }
    return $classes;
}
add_filter( 'post_class', 'remove_sticky_class' );