自定义帖子类型存档URL接管页面URL

时间:2016-08-11 作者:Cyrus

我对自定义帖子类型的档案有问题。

我有一个WordPress页面/address//address/post#/当我激活此功能时,WordPress页面/address/ 替换为自定义帖子存档。

我怎样才能阻止这一切的发生?我希望WordPress页面出现在/address/ 而不是存档。

2 个回复
SO网友:Andy Macaulay-Brook

注册帖子类型时,请设置has_archive 参数为false。如果您更改了它,请不要忘记刷新重写规则以查看更改。

现在,如果按照您的要求,希望显示页面而不是归档文件,那么这就可以了。如果您希望显示页面内容以及自定义帖子列表,那么情况如何?

有两种方法可以实现这一点。

1-使用页面模板这是我在网络上经常看到的模板。创建页面模板,在显示标题和内容后,使用自定义循环显示您的帖子。它确实起到了作用,但人们似乎经常被正确的分页弄得一团糟。

2页自定义帖子

这是我的首选方法。我保留has_archive 当我注册我的帖子类型并创建一个普通页面以用于存档模板时。页面的slug与归档slug匹配。默认情况下,WP的重写规则是按顺序排列的,以便归档优于页面。

在我的archive-{post_type}.php 模板I放置此:

$queried_object = get_queried_object();

$page_data = get_page_by_path( $queried_object->rewrite[\'slug\'] );

/* no need to check our context, as we know that this 
   code will only run for our CPT archives
*/

if ( !is_single() ) {
    echo apply_filters(\'the_content\', $page_data->post_content);
}

// process the content in the same way that the_content would within a loop

// Now go into your usual archive loop...
如果您愿意,您可以使用页面ID,甚至可以为您的帖子类型设置一个选项,该选项相当于帖子的内置页面。

这样,您就不必为自己重新构建更困难的归档查询。

SO网友:Cyrus

谢谢大家的帮助。

安迪让我走上了正确的道路。我只想补充一下:

flush\\u rewrite\\u rules();

再次感谢!

相关推荐

Templates and meta

我想将CPT中的一些自定义字段传递给帖子。我有一些代码,但我不知道如何“集成”它。我正在WP模板中做一些事情(这不是我的,这是主要问题)。Code 我有这个single-job.php, 这是-从单个复制。php—CPT的post模板。<?php /** * Job Post */ if( defined(\'FW\') ) : $elements = jevelin_option( \'post_elements\' ); if(