Wordpress 中的类别菜单 (+ Twig/Timber)
Menu with categories in Wordpress (+ Twig/Timber)
我是 Wordpress 的新手,所以如果我错过了一些非常 basic/trivial.
的东西,我很抱歉(请告诉我)
我有一个显示所有帖子(自定义类型“内容”)的页面。我想要一个包含类别项目的菜单,以便单击给定类别将显示该类别中的所有帖子。
我目前拥有的:
<!-- menu.twig -->
<li>
{% for item in menu.items %}
<ul>
<a target='{{ item.target }}' href='{{ item.link }}'>{{ item.title }}</a>
</ul>
{% endfor %}
</li>
// functions.php
// Code from the Timber starter theme
/** This is where you add some context
*
* @param string $context context['this'] Being the Twig's {{ this }}.
*/
public function add_to_context( $context ) {
$context['menu'] = new Timber\Menu();
$context['site'] = $this;
return $context;
}
// ...
// Content Post Type
function content() {
$labels = array(
'name' => _x( 'Content', 'post type general name' ),
'singular_name' => _x( 'Content', 'post type singular name' ),
'add_new' => _x( 'Add New', 'Content' ),
'add_new_item' => __( 'Add New Content' ),
'edit_item' => __( 'Edit Content' ),
'new_item' => __( 'New Content' ),
'all_items' => __( 'All Content' ),
'view_item' => __( 'View Content' ),
'search_items' => __( 'Search Content' ),
'not_found' => __( 'No content found' ),
'not_found_in_trash' => __( 'No content found in the Trash' ),
'parent_item_colon' => '',
'menu_name' => 'Content',
);
$args = array(
'labels' => $labels,
'description' => 'Content',
'public' => true,
'supports' => array( 'title', 'editor', 'excerpt' ),
'has_archive' => true,
'rewrite' => array( 'slug' => '/' ),
'hierarchical' => true,
);
register_post_type( 'content', $args );
}
add_action( 'init', 'content' );
// Content Taxonomy
function content_taxonomy_init() {
$args = array(
'show_admin_column' => true,
'hierarchical' => true,
);
register_taxonomy( 'content_taxonomy', array('content'), $args );
}
add_action( 'init', 'content_taxonomy_init', 0 );
我的类别按预期显示,但当我点击它们时,我被转到 {url}/content_taxonomy/a/
(“a”是一个示例类别),并且该页面是空的。我需要做什么才能让页面显示帖子?
我已经阅读了我能找到的所有内容,据我所知,这应该是自动完成的,不需要我进行任何配置 (?)。
想法:在我写这篇文章的时候,我在想也许我需要创建一个 .php(和相应的 .twig)文件(比如 content_taxonomy.php) 并明确指出我希望获得选定类别的帖子……如果这有意义,请告诉我。
执行此操作的最简单方法是(减去菜单)为自定义 post 类型创建存档模板。
采用当前的 wordpress archive.php
模板,将其复制并重命名为 archive-POSTTYPE.php
< 重命名 'POSTTYPE' 以匹配您的自定义 post 类型。对你来说,这将是 archive-content.php
默认情况下,这应该创建一个自定义存档页面来加载您的自定义 post 类型。您还可以使用分类法和其他 post 类型执行此操作。
关于菜单,您可以像上面那样创建一个功能,显示自定义 post 类型名称或 post 类型分类法,链接到要显示的 'archive-posttype'每个单独的页面。
更多信息:https://developer.wordpress.org/themes/basics/template-hierarchy/
我是 Wordpress 的新手,所以如果我错过了一些非常 basic/trivial.
的东西,我很抱歉(请告诉我)我有一个显示所有帖子(自定义类型“内容”)的页面。我想要一个包含类别项目的菜单,以便单击给定类别将显示该类别中的所有帖子。
我目前拥有的:
<!-- menu.twig -->
<li>
{% for item in menu.items %}
<ul>
<a target='{{ item.target }}' href='{{ item.link }}'>{{ item.title }}</a>
</ul>
{% endfor %}
</li>
// functions.php
// Code from the Timber starter theme
/** This is where you add some context
*
* @param string $context context['this'] Being the Twig's {{ this }}.
*/
public function add_to_context( $context ) {
$context['menu'] = new Timber\Menu();
$context['site'] = $this;
return $context;
}
// ...
// Content Post Type
function content() {
$labels = array(
'name' => _x( 'Content', 'post type general name' ),
'singular_name' => _x( 'Content', 'post type singular name' ),
'add_new' => _x( 'Add New', 'Content' ),
'add_new_item' => __( 'Add New Content' ),
'edit_item' => __( 'Edit Content' ),
'new_item' => __( 'New Content' ),
'all_items' => __( 'All Content' ),
'view_item' => __( 'View Content' ),
'search_items' => __( 'Search Content' ),
'not_found' => __( 'No content found' ),
'not_found_in_trash' => __( 'No content found in the Trash' ),
'parent_item_colon' => '',
'menu_name' => 'Content',
);
$args = array(
'labels' => $labels,
'description' => 'Content',
'public' => true,
'supports' => array( 'title', 'editor', 'excerpt' ),
'has_archive' => true,
'rewrite' => array( 'slug' => '/' ),
'hierarchical' => true,
);
register_post_type( 'content', $args );
}
add_action( 'init', 'content' );
// Content Taxonomy
function content_taxonomy_init() {
$args = array(
'show_admin_column' => true,
'hierarchical' => true,
);
register_taxonomy( 'content_taxonomy', array('content'), $args );
}
add_action( 'init', 'content_taxonomy_init', 0 );
我的类别按预期显示,但当我点击它们时,我被转到 {url}/content_taxonomy/a/
(“a”是一个示例类别),并且该页面是空的。我需要做什么才能让页面显示帖子?
我已经阅读了我能找到的所有内容,据我所知,这应该是自动完成的,不需要我进行任何配置 (?)。
想法:在我写这篇文章的时候,我在想也许我需要创建一个 .php(和相应的 .twig)文件(比如 content_taxonomy.php) 并明确指出我希望获得选定类别的帖子……如果这有意义,请告诉我。
执行此操作的最简单方法是(减去菜单)为自定义 post 类型创建存档模板。
采用当前的 wordpress archive.php
模板,将其复制并重命名为 archive-POSTTYPE.php
< 重命名 'POSTTYPE' 以匹配您的自定义 post 类型。对你来说,这将是 archive-content.php
默认情况下,这应该创建一个自定义存档页面来加载您的自定义 post 类型。您还可以使用分类法和其他 post 类型执行此操作。
关于菜单,您可以像上面那样创建一个功能,显示自定义 post 类型名称或 post 类型分类法,链接到要显示的 'archive-posttype'每个单独的页面。
更多信息:https://developer.wordpress.org/themes/basics/template-hierarchy/