wordpress 中自定义 post 类型中一个特定 post 的自定义模板
Custom template for one specific post in a custom post type in wordpress
我有一个小网络应用程序,我想 运行 在我的 WordPress 网站上自定义 post 类型的页面中。
所以我想创建一个新模板,将此应用程序的特定代码放在那里,并将此模板分配给自定义 post 类型页面。
遗憾的是 Wordpress 没有在我的 cpt 中显示模板。
模板文件名为 fretfind.php,第一行包含:
/*
Template Name: Fretfind
Template Post Type: guitar
*/
'guitar' 是 cpt 子弹。
有谁知道为什么它不显示此模板的选择选项。自定义 Post 类型模板是否有任何额外步骤?
或者通常有另一种好的做法是只在一个特定的 wordpress 页面上自定义 php 代码吗?类似于 post ID 的模板?
如果这是一个页面,您可以使用名为 page-{slug}.php
的模板文件,其中 {slug} 是特定页面的 slug(参见此处:https://developer.wordpress.org/themes/template-files-section/page-template-files/#page-templates-within-the-template-hierarchy)。
但是由于我们谈论的是 CPT,所以不幸的是只有 single-{$posttype}.php
而没有 single-{$posttype}-{$slug}.php
(请参阅此处:https://developer.wordpress.org/themes/template-files-section/custom-post-type-template-files/#custom-post-type-templates)
但是,您可以通过将此代码添加到主题的 functions.php
:
来为 CPT 添加对此类模板文件的支持
add_filter( 'single_template', function( $template ) {
global $post;
if ( $post->post_type === 'guitar' ) {
$locate_template = locate_template( "single-guitar-{$post->post_name}.php" );
if ( ! empty( $locate_template ) ) {
$template = $locate_template;
}
}
return $template;
} );
然后使用模板文件 single-guitar-myspesificguitarslug.php
(其中 myspesificguitarslug 是您希望应用此模板的 CPT 页面的 slug)
我有一个小网络应用程序,我想 运行 在我的 WordPress 网站上自定义 post 类型的页面中。 所以我想创建一个新模板,将此应用程序的特定代码放在那里,并将此模板分配给自定义 post 类型页面。
遗憾的是 Wordpress 没有在我的 cpt 中显示模板。
模板文件名为 fretfind.php,第一行包含:
/*
Template Name: Fretfind
Template Post Type: guitar
*/
'guitar' 是 cpt 子弹。
有谁知道为什么它不显示此模板的选择选项。自定义 Post 类型模板是否有任何额外步骤?
或者通常有另一种好的做法是只在一个特定的 wordpress 页面上自定义 php 代码吗?类似于 post ID 的模板?
如果这是一个页面,您可以使用名为 page-{slug}.php
的模板文件,其中 {slug} 是特定页面的 slug(参见此处:https://developer.wordpress.org/themes/template-files-section/page-template-files/#page-templates-within-the-template-hierarchy)。
但是由于我们谈论的是 CPT,所以不幸的是只有 single-{$posttype}.php
而没有 single-{$posttype}-{$slug}.php
(请参阅此处:https://developer.wordpress.org/themes/template-files-section/custom-post-type-template-files/#custom-post-type-templates)
但是,您可以通过将此代码添加到主题的 functions.php
:
add_filter( 'single_template', function( $template ) {
global $post;
if ( $post->post_type === 'guitar' ) {
$locate_template = locate_template( "single-guitar-{$post->post_name}.php" );
if ( ! empty( $locate_template ) ) {
$template = $locate_template;
}
}
return $template;
} );
然后使用模板文件 single-guitar-myspesificguitarslug.php
(其中 myspesificguitarslug 是您希望应用此模板的 CPT 页面的 slug)