我使用ACF在两个区域创建具有独立灵活布局部分的页面,主页面部分区域和侧栏区域。
我有一个名为case-studies的CPT,并创建了一个名为case-studies的页面。我在CPT中设置了'has_archive' => false,,希望页面被使用,但是(我理解)这有一个层次结构,所以如果没有提供存档,那么它将加载我的home.php (这是我的新闻,post类型)。
是否有任何方法可以将页面用作CPT的存档?目前我能看到的唯一解决方案是使用ACF CPT选项页插件并将我创建的ACF字段附加到我的“案例研究存档”页面中,但是,我必须复制我的所有代码,以便它们能够调用正确的内容。例如:
the_field('field_name');到the_field('field_name', 'cpt_case-studies');
是否有人能够将页面用作CPT的归档文件,并为该页面分配模板,该页面既查询CPT帖子,又拥有该页面中的ACF字段?
非常感谢你的帮助。如果还有什么我能提供的,请告诉我。
发布于 2018-04-24 12:41:46
最好的方法是将has_archive参数设置为true,然后在主题中创建archive-case-studies.php模板。您仍然可以使用来自ACF的自定义字段。使用the_field()和the_get()时,第二个可接受的参数是post id,但这是根据当前全局对象自动设置的。
例如:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php the_field( 'custom_field', $post->ID ); ?>
<?php endwhile; endif; ?>与以下相同:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php the_field( 'custom_field' ); ?>
<?php endwhile; endif; ?>长话短说;使用带有自定义模板的归档页面,您将能够实现我认为您所追求的目标而没有问题。如果你是这样做的话,这要比滚动一些自定义的东西少得多,因为归档页面可能是一个痛苦的工作。
发布于 2018-04-24 15:13:21
在Daniel的答案的基础上,我创建了一个函数,它为我需要获取ID的所有页面创建了一个数组,以便将它们的内容添加到特定的归档页面中。
function getOtherPageID($page = null)
{
global $post;
$postIDs = [
'case-studies' => 42, // 42 being the page ID of the content I need
];
if(array_key_exists($page, $postIDs)) :
$id = $postIDs[$page];
endif;
return $id;
}通过在我的$id = getOtherPageID('case-studies');模板页面(或任何其他归档模板)中调用archive-case-studies.php,我能够获取所需的ID,然后将其添加到archive-case-studies.php字段中。然后,在每个对应的ACF字段调用中,我只需将$id添加到ACF字段调用:get_field('field_name', $id);。
希望这能帮到别人。
-最新消息
我没有输入post ID (在上面的例子中是42),而是将其修改为使用get_page_by_path();函数。因此,我的职能是:
function getOtherPageID($page = null)
{
global $post;
$postIDs = [
'case-studies' => get_page_by_path( $page ),
];
if(array_key_exists($page, $postIDs)) :
$id = $postIDs[$page]->ID;
endif;
return $id;
}这将得到post对象,然后将$id设置为post对象的ID,然后返回。
https://stackoverflow.com/questions/50001531
复制相似问题