通过自定义帖子类型中的字段分配模板的过滤器或操作挂钩
Posted
技术标签:
【中文标题】通过自定义帖子类型中的字段分配模板的过滤器或操作挂钩【英文标题】:Filter or action hook to assign a template by a field in custom post type 【发布时间】:2021-12-22 20:09:05 【问题描述】:我有一个名为“project”的自定义帖子类型,并为其使用了模板“single-project.php” 这工作正常。
现在我想进行一些区分,如果“项目”帖子类型中的自定义值是移动的,我需要分配模板“single-project.php”,如果该自定义是“project-website.php”模板元值等于网站。
表示,需要代码根据自定义元值动态更改模板。
谢谢
【问题讨论】:
【参考方案1】:如果自定义元值等于“website”,最简单的方法是从“single-project.php”文件中调用“project-website.php”文件。
编辑你的“single-project.php”文件:
<?php
$custom_field_value = get_post_meta($post_id,'your-custom-meta-key',true);
if($custom_field_value == 'website')
echo get_template_part('single-project');
else
*** ENTER YOUR CURRENT CODE FOR SINGLE-PROJECT.PHP HERE ***
?>
【讨论】:
【参考方案2】:@Jeremy 好点,我已经知道了,但我是这样做的,谢谢,
function get_custom_post_type_template($single_template)
global $post;
$object = get_queried_object();
$id = $object->ID;
$post_type = $object->post_type;
$is_mobile = get_field('is_mobile_app', $id);
if ($is_mobile !== true && $post_type == 'project')
return $single_template = dirname(__FILE__) . '/single-project-website.php';
else
return $single_template;
// return $single_template;
```
【讨论】:
以上是关于通过自定义帖子类型中的字段分配模板的过滤器或操作挂钩的主要内容,如果未能解决你的问题,请参考以下文章
按关系字段 (ACF) 的 Elementor 帖子的自定义查询过滤器