最新公告
  • 优贝云资源网-为站长提供优质资源最佳选择!致力精品资源分享-立即加入我们
  • 自从WORDPRESS添加了自定义文章类型功能以来,现在很多网站开发或WORDPRESS主题、插件都会用到自定义文章类型,今天我们来说下如何在首页、搜索结果页、作者存档以及FEED订阅输出中限制文章类型。这里所指的都是WORDPRESS的主循环(即这些类型页面默认的循环)。

    注:以下的代码都可以添加到当前主题的FUNCTIONS.PHP中,或者也可以添加到你自己的插件中。

    限定首页主循环的文章类型

    如果你的首页是常规的博客列表,那这个方法是有效的。

    /**
    * 自定义首页主循环的文章类型
    */
    function wpkj_homepage_pre_get_posts( $query ) {
    // 限定首页的主循环
    if ( $query->is_home() && $query->is_main_query() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }
    }
    add_action( ‘pre_get_posts’, ‘wpkj_homepage_pre_get_posts’, 99, 1 );

    限定搜索结果页的文章类型

    /**
    * 自定义搜索结果页面的文章类型
    */
    function wpkj_search_archive_pre_get_posts( $query ) {
    //限定搜索主循环,并且是前台页面
    if ( $query->is_search && $query->is_main_query() && !is_admin() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }
    }
    add_action( ‘pre_get_posts’, ‘wpkj_search_archive_pre_get_posts’, 99, 1 );

    限定作者存档页的文章类型

    /**
    * 自定义作者存档页的文章类型
    */
    function wpkj_author_archive_pre_get_posts( $query ) {
    //限定是作者存档的主循环
    if ( $query->is_author() && $query->is_main_query() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }
    }
    add_action( ‘pre_get_posts’, ‘wpkj_author_archive_pre_get_posts’, 99, 1 );

    限定FEED订阅输出的文章类型

    /**
    * 自定义Feed订阅的文章类型
    */
    function wpkj_feed_pre_get_posts( $query ) {

    //限定是Feed输出
    if ( $query->is_feed() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }
    }
    add_action( ‘pre_get_posts’, ‘wpkj_feed_pre_get_posts’, 99, 1 );

    将上面的所有功能集成到一个函数中

    大家仔细看的上面的函数代码,其实都是同一个模板,我们可以将他们集中在一个函数中:

    /**
    * 自定义首页、搜索、作者存档、FEED订阅输出的文章类型
    */
    function wpkj_custom_pre_get_posts( $query ) {
    // 自定义首页主循环的文章类型
    if ( $query->is_home() && $query->is_main_query() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }

    // 自定义搜索结果页面的文章类型
    if ( $query->is_search && $query->is_main_query() && !is_admin() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }

    // 自定义作者存档页的文章类型
    if ( $query->is_author() && $query->is_main_query() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }

    // 自定义Feed订阅的文章类型
    if ( $query->is_feed() && $query->is_main_query() ) {
    // 请根据你的实际需要,修改下面这个array数组的文章类型
    $post_type = array( ‘post’, ‘product’, ‘book’ );
    $query->set( ‘post_type’, $post_type );
    }
    }
    add_action( ‘pre_get_posts’, ‘wpkj_custom_pre_get_posts’, 99, 1 );

    当然了,上面的函数还可以精简,只不过为了可读性和灵活性,就不再压缩了,有能力的朋友可以自己修改。

    PRE_GET_POSTS钩子讲解

    在上面的代码中,我们都用到了PRE_GET_POSTS钩子,它可以更改WP_QUERY查询的各种参数,不仅限于文章类型’POST_TYPE’,还可以是分类、每页数量等等。

    本站大部分资源收集于网络以及网友投稿,本不保证资源的完整性以及安全性,请下载后自行测试。 本站资源仅供下载者学习技术,版权归资源原作者所有,请在下载后24小时之内自觉删除。 若作商业用途,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。 如您是版权方,本站源码有侵犯到您的权益,请邮件联系 263956200@qq.com 删除,我们将及时处理!
    优贝云资源网 » WORDPRESS自定义首页、搜索、作者存档、FEED订阅输出的文章类型

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    优贝云
    致力于为广大站长提供最新最良心的网络资源,有价值的网站源码,有态度的分享精神,为站长提供资源变现最佳选择!
    • 34会员总数(位)
    • 573资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 176稳定运行(天)

    提供最优质的资源集合

    加入SVIP 优质源码
    升级SVIP尊享更多特权立即升级