如何根据类别在单个 post 中显示自定义字段?

How to display custom fields in single post based on category?

我正在使用 WordPress 在本地开发一个网站,并使用高级自定义字段插件创建了一组字段,这些字段将在 post 类别设置为 'Front Page Events' 时显示。这个类别有 fpe.

我将下面的代码放在 child 主题的 functions.php 中以创建单个模板文件夹的路径:

/*
* Creates a path to single template folder for Front Page Events to be viewed as single posts
*/
define('SINGLE_PATH', TEMPLATEPATH . '/single');
 
/**
* Filter the single_template with our custom function
*/
add_filter('single_template', 'my_single_template');
 
/**
* Single template function which will choose our template
*/
function my_single_template($single) {
global $wp_query, $post;
 
/**
* Checks for single template by category
* Check by category slug and ID
*/
foreach((array)get_the_category() as $cat) :
 
if(file_exists('SINGLE_PATH' . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
 
elseif(file_exists('SINGLE_PATH' . '/single-cat-' . $cat->term_id . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
 
endforeach;
}

然后我在我的主题中手动创建了一个名为 'single' 的文件夹(一个 child of twentyseventeen)。

我从 parent 主题中复制了 single.php 并将其粘贴到 twentyseventeen-child/single 中。然后我将此文件重命名为 single-cat-fpe.php。然后我添加了一些代码以从 post:

获取自定义字段
<?php
/**
 * Template Name: Front Page Events
 * Template Post Type: post, page
 * 
 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since Twenty Seventeen 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">



            <?php
            // Start the Loop.
            while ( have_posts() ) :
                the_post(); ?>

                <h1>TEST</h1>
                
                <?php 

                get_template_part( 'template-parts/post/content', get_post_format() ); ?>

                <p><?php echo the_field('event_title'); ?></p>
                <p><?php echo the_field('event_description'); ?></p>
                <p><?php echo the_field('event_link'); ?></p> 
        

                // If comments are open or we have at least one comment, load up the comment template.
                if ( comments_open() || get_comments_number() ) :
                    comments_template();
                endif;

                the_post_navigation(
                    array(
                        'prev_text' => '<span class="screen-reader-text">' . __( 'Previous Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Previous', 'twentyseventeen' ) . '</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '</span>%title</span>',
                        'next_text' => '<span class="screen-reader-text">' . __( 'Next Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Next', 'twentyseventeen' ) . '</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) . '</span></span>',
                    )
                );

            endwhile; // End the loop.
            ?>

        </main><!-- #main -->
    </div><!-- #primary -->
    <?php get_sidebar(); ?>
</div><!-- .wrap -->

<?php
get_footer();

我能够从自定义字段中获取数据以显示在网站首页的滑块中。但是,当我尝试查看单个 post 时,自定义字段没有显示。 (带有 h1 标签的测试行也没有。)我也看不到我在 post 编辑器中创建的模板。谁能帮我弄清楚在查看此类别中的单个 post 时如何正确显示自定义字段?

实际上这看起来可能是一个 theme-related 问题。因为我使用的是 child 二十七,所以有必要将单个 post 文件放在 template-parts/post/content-php 中。我现在已经解决了。