是否可以仅通过使用插件代码在wp主页上显示多种(自定义)帖子类型?

时间:2019-03-26 作者:styx

我正在开发一个插件,我想显示我的自定义帖子类型(projects) 标准岗位类型旁边posts. 我知道我可以通过向主题函数添加一些代码来做到这一点。php。但是在我的插件中有可能做到这一点吗?插件应该从一开始就可用,无需用户执行一些额外的步骤。

2 个回复
SO网友:mrben522

像这样的事情应该可以实现你的目标。您可能需要删除is_main_query() 不过,请根据您希望它显示的位置进行检查。

add_filter(\'pre_get_posts\', \'projects_are_posts\');
function projects_are_posts($query) {
    if (is_admin() || !is_main_query() ) {
        return $query;
    }
    $types = $query->get(\'post_type\');
    if (!is_array($types)) {
        $types = array($types);
    }
    if (in_array(\'post\', $types) && !in_array(\'projects\', $types)) {
        array_push($types, \'projects\');
        $query->set(\'post_type\', $types);

    }
}

SO网友:WebElaine

跨主题可靠地做到这一点(每次显示帖子时都显示CPT)的唯一方法是在插件中注册一个新模板,并让它完全接管主页。这将极大地影响样式和功能-您当然可以包括正常的页眉和页脚,但这两者之间的任何内容都只是您的自定义代码,与主题的其余部分都不匹配。这与WooCommerce的工作类似——他们创建自己的模板。如果最终用户精通PHP,他们可以将该模板复制到主题中并进行自定义,但大多数只想通过插件添加自定义查询的用户并不一定精通PHP。

主题是以各种不同的方式构建的,从PHP代码本身到可以依赖于一定数量项目的CSS,因此除非您完全接管模板,否则无法保证在显示帖子的任何位置都能安全地添加CPT查询。但是,您也可以将插件设置为具有覆盖标准模板的选项页面,例如,具有主页、单个、类别、存档、页面等选项,然后在插件中,仅在该查询类型且选项处于启用状态时添加自定义CPT查询。例如,对于主页问题,将条件设置为if(is_home && get_option(\'home_cpt\') == 1), 等等

相关推荐

Homepage Not Found Error

好的,所以出于某种原因,我的主页总是显示为“找不到页面”。我搜索了无数讨论同一问题的其他帖子,但似乎没有一个答案对我有帮助。我对网站还不熟悉,所以我不知道该怎么办。当我开始我的网站时,总是会出现“页面未找到”错误,但我认为这是因为我删除了示例帖子,没有其他帖子。当我开始发帖时,事情并没有改变,我将设置更改为“静态页面”,这很有效。。。几个小时。那天晚些时候我重新登录时,错误再次出现。我曾尝试将我的主页从“您的最新帖子”(页面出现“未找到页面”错误,即使我有两篇帖子)更改为“静态页面”(当我创建一个页面并将