gpt4 book ai didi

php - 如何在 WordPress 中使用自定义帖子类型存档作为首页?

转载 作者:行者123 更新时间:2023-12-02 06:07:18 26 4
gpt4 key购买 nike

我想使用自定义帖子类型存档作为网站的首页,这样

 http://the_site.com/

是根据我的archive-{post-type}.php 文件显示的自定义帖子类型存档。

理想情况下,我想在我的 functions.php 文件中使用 is_front_page() 来更改查询。我尝试了以下方法,将一个名为“主页”的页面作为我的首页:

 add_filter('pre_get_posts', 'my_get_posts');
function my_get_posts($query){
global $wp_the_query;
if(is_front_page()&&$wp_the_query===$query){
$query->set('post_type','album');
$query->set('posts_per_page',-1);
}
return $query;
}

但首页正在返回“Home”的内容,似乎忽略了自定义查询。

我做错了什么?一般来说,有没有更好的方法来解决这个问题?

注意:我确实在 WordPress Answers 中发布了这个但该社区相对较小。

最佳答案

将最终解决方案作为答案发布(Isaac 将其作为评论),仅供仍在寻找的人使用。

Isaac 通过 functions.php 添加了一个过滤器,走在了正确的轨道上.他做错的是打电话is_front_page() ,这还行不通,因为我们在 pre_get_posts并且查询还没有被执行。

但是我们确实有当前页面 ID。所以我们仍然可以通过查看 WordPress 选项注册一个名为 page_on_front 的选项来解决这个问题。 , 它返回用户设置为首页的页面的 ID。

(有关所有 WordPress 选项的概述,只需在浏览器中访问 <yourwordpressinstallation>/wp-admin/options.php。)

这导致以下解决方案 as suggested by Ijaas :

add_action("pre_get_posts", "custom_front_page");
function custom_front_page($wp_query) {
// Compare queried page ID to front page ID.
if(!is_admin() && $wp_query->get("page_id") == get_option("page_on_front")) {

// Set custom parameters (values based on Isaacs question).
$wp_query->set("post_type", "album");
$wp_query->set("posts_per_page", -1);

// WP_Query shouldn't actually fetch the page in our case.
$wp_query->set("page_id", "");

}
}

您可能需要更改一些条件标签以确保所有插件仍然有效,具体取决于查询更改的严重程度。

希望这对某人有帮助。

更新:如前所述below , 添加 !is_admin()if -statement 以确保函数仅在前端运行。如果您只想为初始查询运行此操作,您还可以添加主查询检查 $wp_query->is_main_query() .

关于php - 如何在 WordPress 中使用自定义帖子类型存档作为首页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com