wordpress知识库
网站首页 > 知识库 > wordpress知识 >

wordpress置顶文章

2014/09/02

在WordPress中,可以通过以下几种方式将文章置顶

1、使用置顶功能:WordPress提供了一个内置的“置顶”功能,允许将特定wordpress插件文章固定在博客或网站的顶部。在编辑文章页面,可以找到“发布”面板中的“可见性”选项。点击“编辑”链接,并选择“置顶该条目”复选框。保存更改后,该文章将会被置顶。

2、修改查询参数:如果想自定义置顶文章的显示方式,可以使用pre_get_posts钩子来修改查询参数。以下是一个示例代码,将置顶文章优先显示在查询结果的顶部:

function custom_sticky_posts( $query ) {
    if ( $query->is_main_query() && ! is_admin() ) {
        $query->set( 'post__in', get_option( 'sticky_posts' ) );
        $query->set( 'ignore_sticky_posts', 1 );
    }
}
add_action( 'pre_get_posts', 'custom_sticky_posts' );

上述示例代码将custom_sticky_posts函数与pre_get_posts钩子关联,当主查询执行时,它会将置顶文章的ID数组(通过get_option( 'sticky_posts' )获取)设置为post__in参数,并将ignore_sticky_posts参数设置为1以忽略其他置顶文章的排序。

  1. 自定义循环查询:如果希望更精确地控制置顶文章的显示位置和方式,可以使用自定义循环查询来实现。以下是一个示例代码,将置顶文章放在循环查询结果的顶部:
$sticky = get_option( 'sticky_posts' );

$args = array(
    'post__in'            => $sticky,
    'ignore_sticky_posts' => 1,
);

$custom_query = new WP_Query( $args );

if ( $custom_query->have_posts() ) {
    while ( $custom_query->have_posts() ) {
        $custom_query->the_post();
        // 在这里输出置顶文章的内容
    }
    wp_reset_postdata();
}

// 继续正常的循环查询
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        // 输出其他文章的内容
    }
}

上述示例代码中,我们首先获取置顶文章的ID数组,然后使用WP_Query类创建一个自定义查询对象。通过在循环中使用$custom_query->the_post()来输出置顶文章的内容。最后,我们继续正常的循环查询来输出其他文章的内容。

请注意,在使用自定义循环查询时,需要适当地重置查询数据(使用wp_reset_postdata())以确保后续的查询和函数调用正常工作。

无论选择哪种方法,都可以根据需求将文章置顶,并根据需要进行自定义设置。