yann-soaz/ys_cpt

代码用于向 WordPress 主题或插件添加自定义文章类型

dev-master 2023-05-31 07:09 UTC

This package is auto-updated.

Last update: 2024-09-30 01:50:18 UTC


README

WordPress 插件,可轻松生成自定义内容类型

安装

使用 composer 在您的主题或插件中安装项目。

  composer require yann-soaz/ys_cpt

如果尚未这样做,请导入 autoload

  require('vendor/autoload.php');

使用

调用管理器

  $cpt = YS_PostTypeManager::get();

创建内容类型

基本

    $cpt->addPostType('projets')

高级

生成标签(法语)

$projets = ($cpt->addPostType('projets'))
                ->generateLabels('projet');

生成带有非“s”结尾的复数标签

$cadeaux = ($cpt->addPostType('cadeau'))
                ->generateLabels('cadeau', 'cadeaux');

生成女性标签

$eaux = ($cpt->addPostType('eaux'))
                ->generateLabels('eau', 'eaux', true);

手动输入一个或多个标签

$projets = ($cpt->addPostType('eau'))
                ->setLabels([
                    'not_found' => 'aucune eau n\'a été trouvée... Bonne désidratation !',
                    'add_new' => 'Créer un nouvelle eau'
                ]);

注意:标签将替换自动生成的标签,但不会删除未作为参数传递的标签。

在 WordPress 管理菜单中定位

$cadeaux = ($cpt->addPostType('cadeau'))
                ->menuBefore('post'); // positionne avant le contenu article
$cadeaux = ($cpt->addPostType('cadeau'))
                ->menuAfter('post'); // positionne après le contenu article

可用位置列表:'dashboard', 'posts', 'media', 'links', 'pages', 'comments', 'appearances', 'plugins', 'users', 'tools', 'settings'

更改管理菜单图标

$cadeaux = ($cpt->addPostType('cadeau'))
                ->menuIcon('dashicons-buddicons-community');

可用图标列表:https://developer.wordpress.org/resource/dashicons

获取 CPT 的 slug

$cadeaux = $cpt->addPostType('cadeau');
$cadeaux->getSlug();

在内容保存时添加一个或多个操作

$cadeaux = $cpt->addPostType('cadeau');
$cadeaux->getSlug();

自定义内容类型设置

$eaux = ($cpt->addPostType('eaux'))
                ->setArgs([
                    'taxonomies' => ['categories', 'tags']
                ]);

内容的基本参数是

    $this->args = [
      'hierarchical'        => true,
      'description'         => 'description',
      'taxonomies'          => [],
      'public'              => true,
      'show_ui'             => true,
      'show_in_menu'        => true,
      'menu_position'       => 5,
      'show_in_nav_menus'   => true,
      'publicly_queryable'  => true,
      'exclude_from_search' => false,
      'show_in_rest'        => true,
      'has_archive'         => true,
      'query_var'           => true,
      'can_export'          => true,
      'rewrite'             => true,
      'capability_type'     => 'post', 
      'supports'            => [
        'title', 'editor', 'author', 'thumbnail', 
        'custom-fields', 'trackbacks', 'comments', 
        'revisions', 'page-attributes', 'post-formats'
      ],
    ];

创建分类法

基本

    $cpt->addTaxonomy('type_projet')

高级

添加到内容类型

    $cadeaux = $cpt->addPostType('cadeau');

    $type_projet = $cpt->addTaxonomy('type_projet');
    $type_projet->addPostTypes('page', 'post', $cadeaux->getSlug());

取消分类法术语的层次结构

    $type_projet = $cpt->addTaxonomy('type_projet');
    $type_projet->isTag();

生成标签 标签生成方式与内容类型相同

    $methodo = $cpt->addTaxonomy('methodo');
    $methodo->generateLabels('méthodologie', 'méthodologies', true); // singulier, pluriel, féminin (bool)

自定义标签

    $methodo = $cpt->addTaxonomy('methodo');
    $methodo->setLabels([
      'new_item_name' => 'Nom de la nouvelle méthodologie.'
    ]);

默认标签

    $this->labels = [
      'name' => $plural,
      'singular_name' => $singular,
      'search_items' =>  'rechercher des '.$plural,
      'all_items' => 'Toutes les '.$plural,
      'parent_item' => sprintf("%s %s", $singular, ( ($feminin) ? 'parente' : 'parent' ) ),
      'parent_item_colon' => sprintf("%s %s :", $singular, ( ($feminin) ? 'parente' : 'parent' ) ),
      'edit_item' => sprintf( 'Modifier %s %s.', ( ($feminin) ? 'la' : 'le' ), $singular ),
      'update_item' => sprintf( 'Mettre à jour %s %s.', ( ($feminin) ? 'la' : 'le' ), $singular ),
      'add_new_item' => sprintf("Ajouter %s %s.",( ($feminin) ? 'une nouvelle' : 'un nouveau' ), $singular),
      'new_item_name' => 'Nouveau nom de '.$singular,
      'menu_name' => $plural,
      'popular_items' => $plural.' populaires',
      'separate_items_with_commas' => 'Séparez les '.$plural.' par des virgules.',
      'add_or_remove_items' => 'Ajouter ou supprimer des '.$plural,
      'choose_from_most_used' => sprintf( 'Choisissez les %s les plus %s.', $plural, ( ($feminin) ? 'utilisées' : 'utilisés' )),
      'not_found' => sprintf( '%s %s %s.', ( ($feminin) ? 'aucunes' : 'aucun' ), $singular, ( ($feminin) ? 'Trouvée' : 'trouvé' ) ),
    ];

自定义分类法

    $methodo = $cpt->addTaxonomy('methodo');
    $methodo->setArgs([
      'show_in_rest' => false
    ]);

默认参数

    [
      // Hierarchical taxonomy (like categories)
      'hierarchical' => true,
      'show_in_rest' => true,
      // Control the slugs used for this taxonomy
      'rewrite' => [
        'slug' => $this->slug, // This controls the base slug that will display before each term
        'hierarchical' => true // This will allow URL's like "/locations/boston/cambridge/"
      ]
    ];