需要分配自定义分类到特定的php模板的网页- WordPress的

hmae6n7t  于 2022-12-17  发布在  PHP
关注(0)|答案(3)|浏览(136)

我在WordPress中创建了一个名为“consultants_category”的自定义分类,并将其分配给自定义帖子类型。现在我需要将此分类分配给具有特定php模板的页面-“page-consultants.php”。
WordPress有功能来分配自定义分类称为'注册分类为对象类型'(https://developer.wordpress.org/reference/functions/register_taxonomy_for_object_type/),但当我使用它-我的分类(自定义类别)显示在所有WP页面的后端,我不知道如何采取页面只与特定的页面模板。
下面是我需要实现的粗略想法(获取所有的wp页面-〉过滤所有页面以获取仅使用特定php模板的页面-〉仅为过滤后的页面分配自定义分类):

function add_taxonomies_to_pages() {
$pages = get_pages(
     array(
    'meta_key' => '_wp_page_template',
    'meta_value' => 'page-consultants.php'
       )
);

foreach($pages as $page){
 register_taxonomy_for_object_type( 'consultants_category', 'pages');
}
}

add_action( 'init', 'add_taxonomies_to_pages' );

希望你能帮忙。谢谢。

n6lpvg4x

n6lpvg4x1#

如果注册分类,则可以选择分类应注册到的帖子类型。https://codex.wordpress.org/Function_Reference/register_taxonomy
在您的情况下,这将是页面。这将影响所有页面,因为它们都是“页面”类型。
您可以创建另一个帖子类型,如果你想有从页面分离。
使用您的函数,您可以添加另一个要注册到分类的类型。此register_taxonomy_for_object_type用于将已注册的分类添加到对象类型。我们正在讨论类型,因此分类现在可用于所有页是正确的行为。
我不太确定我是否理解对了你的问题...但是如果你想给一个特定的页面分配一个页面模板,你可以在后台编辑页面时在页面属性中选择页面模板。
所以你可以为你只想有一个分类的页面创建另一个帖子类型,或者你可以制作页面模板来编辑单个页面的模板。不知道这在你的问题中是什么意思。
也许你可以写更多的细节,你到底是什么试图做什么,你遇到了什么问题。

bfhwhh0e

bfhwhh0e2#

如果我从您的问题和评论中正确理解的话,您要查找的是该自定义分类的归档:
最好不要从一个空文件开始,而是复制层次结构中的下一个文件(如果存在的话)。如果您已经创建了archive.php,请创建一个名为category.php的副本,并根据您的设计需要进行修改。如果您没有archive.php文件,请使用主题的index.php副本作为起点。
取自:https://developer.wordpress.org/themes/template-files-section/taxonomy-templates/
因此,您基本上需要获取archive.php,创建一个副本并将其命名为consultants_category.php-然后在该文件布局中按照您需要的方式显示内容。使用archive.php文件作为起点,并根据需要进行修改。当您这样做时,它是预构建的,以获取您的consultants_category分类,确定它需要显示该分类中的哪个特定术语,然后输出您指定的布局。

zaq34kh6

zaq34kh63#

Developer by [saeed Hanif][1]
To assign a custom taxonomy to pages in WordPress and display those pages using a specific template, you can follow these steps:

Create a custom taxonomy:
In your theme's functions.php file, use the register_taxonomy() function to create a custom taxonomy. For example:


function create_page_taxonomy() {
  $labels = array(
    'name'              => _x( 'Page Types', 'taxonomy general name' ),
    'singular_name'     => _x( 'Page Type', 'taxonomy singular name' ),
    'search_items'      => __( 'Search Page Types' ),
    'all_items'         => __( 'All Page Types' ),
    'parent_item'       => __( 'Parent Page Type' ),
    'parent_item_colon' => __( 'Parent Page Type:' ),
    'edit_item'         => __( 'Edit Page Type' ),
    'update_item'       => __( 'Update Page Type' ),
    'add_new_item'      => __( 'Add New Page Type' ),
    'new_item_name'     => __( 'New Page Type Name' ),
    'menu_name'         => __( 'Page Types' ),
  );

  $args = array(
    'hierarchical'      => true,
    'labels'            => $labels,
    'show_ui'           => true,
    'show_admin_column' => true,
    'query_var'         => true,
    'rewrite'           => array( 'slug' => 'page-type' ),
  );

  register_taxonomy( 'page_type', array( 'page' ), $args );
}
add_action( 'init', 'create_page_taxonomy', 0 );

Add the code to display the pages with the custom taxonomy in the body of the template file:
<?php
$page_type = get_query_var( 'page_type' );
$pages = get_pages( array(
  'tax_query' => array(
    array(
      'taxonomy' => 'page_type',
      'field' => 'slug',
      'terms' => $page_type,
    ),
  ),
) );`enter code here`

foreach ( $pages as $page ) {
  // Output page title and content
  echo '<h2>' . $page->post_title . '</h2>';
  echo apply_filters( 'the_content', $page->post_content );
}

相关问题