Custom Post Type + Custom Taxonomies and Meta Boxes by code

Hi,
I put together the pieces of code provided by GenerateWP in the functions.php of my child theme without result, I also tried in a custom plugin, without success either.
In both cases only CPTs and Taxonomies work.
How can I link the three PHP codes together in a custom plugin?

Here is my little plugin with the CPT and its Taxonomies

<?php
/* Plugin Name: UBS CPT Membres 2 Description: Crée CPT Membres Version: 2.0.0 Author: Guilherme Negreiros Author URI: https://unbonsite.ca/ 
*/function cptui_register_my_cpts_membre() { /** * Post Type: Membres. */ $labels = [ "name" => __( "Membres", "ubs" ), "singular_name" => __( "Membre", "ubs" ), "menu_name" => __( "Membres", "ubs" ), "all_items" => __( "Tous les membres", "ubs" ), "add_new" => __( "Nouveau", "ubs" ), "add_new_item" => __( "Ajouter membre", "ubs" ), "edit_item" => __( "Edit Membre", "ubs" ), "new_item" => __( "Nouveau Membre", "ubs" ), "view_item" => __( "Voir Membre", "ubs" ), "view_items" => __( "Voir les membres", "ubs" ), "search_items" => __( "Search Membres", "ubs" ), "not_found" => __( "No Membres found", "ubs" ), "not_found_in_trash" => __( "No Membres found in trash", "ubs" ), "parent" => __( "Parent Membre:", "ubs" ), "featured_image" => __( "Image principal du Membre", "ubs" ), "set_featured_image" => __( "Set featured image for this Membre", "ubs" ), "remove_featured_image" => __( "Remove featured image for this Membre", "ubs" ), "use_featured_image" => __( "Use as featured image for this Membre", "ubs" ), "archives" => __( "Membre archives", "ubs" ), "insert_into_item" => __( "Insert into Membre", "ubs" ), "uploaded_to_this_item" => __( "Upload to this Membre", "ubs" ), "filter_items_list" => __( "Filter Membres list", "ubs" ), "items_list_navigation" => __( "Membres list navigation", "ubs" ), "items_list" => __( "Membres list", "ubs" ), "attributes" => __( "Membres attributes", "ubs" ), "name_admin_bar" => __( "Membre", "ubs" ), "item_published" => __( "Membre published", "ubs" ), "item_published_privately" => __( "Membre published privately.", "ubs" ), "item_reverted_to_draft" => __( "Membre reverted to draft.", "ubs" ), "item_scheduled" => __( "Membre scheduled", "ubs" ), "item_updated" => __( "Membre updated.", "ubs" ), "parent_item_colon" => __( "Parent Membre:", "ubs" ), ]; $args = [ "label" => __( "Membres", "ubs" ), "labels" => $labels, "description" => "Les membres de la Coopérative Quartier-monde", "public" => true, "publicly_queryable" => true, "show_ui" => true, "show_in_rest" => true, "rest_base" => "", "rest_controller_class" => "WP_REST_Posts_Controller", "has_archive" => "nos-membres", "show_in_menu" => true, "show_in_nav_menus" => true, "delete_with_user" => false, "exclude_from_search" => false, "capability_type" => "post", "map_meta_cap" => true, "hierarchical" => false, "rewrite" => [ "slug" => "membre", "with_front" => true ], "query_var" => true, "menu_position" => 3, "menu_icon" => "dashicons-businessman", "supports" => [ "title", "editor", "thumbnail", "excerpt", "trackbacks", "custom-fields", "comments", "revisions", "author", "page-attributes", "post-formats" ], "taxonomies" => [ "type_de_membre", "etiquettes_des_membres", "regions_desservies" ], "show_in_graphql" => false, ]; register_post_type( "membre", $args );}add_action( 'init', 'cptui_register_my_cpts_membre' );function cptui_register_my_taxes() { /** * Taxonomy: Types de membres. */ $labels = [ "name" => __( "Types de membres", "ubs" ), "singular_name" => __( "Type de membre", "ubs" ), "menu_name" => __( "Types de membres", "ubs" ), "all_items" => __( "All Types de membres", "ubs" ), "edit_item" => __( "Edit Type de membre", "ubs" ), "view_item" => __( "View Type de membre", "ubs" ), "update_item" => __( "Update Type de membre name", "ubs" ), "add_new_item" => __( "Add new Type de membre", "ubs" ), "new_item_name" => __( "New Type de membre name", "ubs" ), "parent_item" => __( "Parent Type de membre", "ubs" ), "parent_item_colon" => __( "Parent Type de membre:", "ubs" ), "search_items" => __( "Search Types de membres", "ubs" ), "popular_items" => __( "Popular Types de membres", "ubs" ), "separate_items_with_commas" => __( "Separate Types de membres with commas", "ubs" ), "add_or_remove_items" => __( "Add or remove Types de membres", "ubs" ), "choose_from_most_used" => __( "Choose from the most used Types de membres", "ubs" ), "not_found" => __( "No Types de membres found", "ubs" ), "no_terms" => __( "No Types de membres", "ubs" ), "items_list_navigation" => __( "Types de membres list navigation", "ubs" ), "items_list" => __( "Types de membres list", "ubs" ), "back_to_items" => __( "Back to Types de membres", "ubs" ), ];  $args = [ "label" => __( "Types de membres", "ubs" ), "labels" => $labels, "public" => true, "publicly_queryable" => true, "hierarchical" => true, "show_ui" => true, "show_in_menu" => true, "show_in_nav_menus" => true, "query_var" => true, "rewrite" => [ 'slug' => 'type_de_membre', 'with_front' => true, ], "show_admin_column" => false, "show_in_rest" => true, "show_tagcloud" => false, "rest_base" => "type_de_membre", "rest_controller_class" => "WP_REST_Terms_Controller", "show_in_quick_edit" => false, "show_in_graphql" => false, ]; register_taxonomy( "type_de_membre", [ "membre" ], $args ); /** * Taxonomy: Étiquettes des membres. */ $labels = [ "name" => __( "Étiquettes des membres", "ubs" ), "singular_name" => __( "Étiquette des membres", "ubs" ), "menu_name" => __( "Étiquettes des membres", "ubs" ), "all_items" => __( "All Étiquettes des membres", "ubs" ), "edit_item" => __( "Edit Étiquette des membres", "ubs" ), "view_item" => __( "View Étiquette des membres", "ubs" ), "update_item" => __( "Update Étiquette des membres name", "ubs" ), "add_new_item" => __( "Add new Étiquette des membres", "ubs" ), "new_item_name" => __( "New Étiquette des membres name", "ubs" ), "parent_item" => __( "Parent Étiquette des membres", "ubs" ), "parent_item_colon" => __( "Parent Étiquette des membres:", "ubs" ), "search_items" => __( "Search Étiquettes des membres", "ubs" ), "popular_items" => __( "Popular Étiquettes des membres", "ubs" ), "separate_items_with_commas" => __( "Separate Étiquettes des membres with commas", "ubs" ), "add_or_remove_items" => __( "Add or remove Étiquettes des membres", "ubs" ), "choose_from_most_used" => __( "Choose from the most used Étiquettes des membres", "ubs" ), "not_found" => __( "No Étiquettes des membres found", "ubs" ), "no_terms" => __( "No Étiquettes des membres", "ubs" ), "items_list_navigation" => __( "Étiquettes des membres list navigation", "ubs" ), "items_list" => __( "Étiquettes des membres list", "ubs" ), "back_to_items" => __( "Back to Étiquettes des membres", "ubs" ), ];  $args = [ "label" => __( "Étiquettes des membres", "ubs" ), "labels" => $labels, "public" => true, "publicly_queryable" => true, "hierarchical" => false, "show_ui" => true, "show_in_menu" => true, "show_in_nav_menus" => true, "query_var" => true, "rewrite" => [ 'slug' => 'etiquettes_des_membres', 'with_front' => true, ], "show_admin_column" => false, "show_in_rest" => true, "show_tagcloud" => false, "rest_base" => "etiquettes_des_membres", "rest_controller_class" => "WP_REST_Terms_Controller", "show_in_quick_edit" => false, "show_in_graphql" => false, ]; register_taxonomy( "etiquettes_des_membres", [ "membre" ], $args ); /** * Taxonomy: Régions desservie. */ $labels = [ "name" => __( "Régions desservie", "ubs" ), "singular_name" => __( "Région Desservie", "ubs" ), "menu_name" => __( "Régions desservie", "ubs" ), "all_items" => __( "All Régions desservie", "ubs" ), "edit_item" => __( "Edit Région Desservie", "ubs" ), "view_item" => __( "View Région Desservie", "ubs" ), "update_item" => __( "Update Région Désservie name", "ubs" ), "add_new_item" => __( "Ajouter nouvelle région Desservie", "ubs" ), "new_item_name" => __( "New Région Désservie name", "ubs" ), "parent_item" => __( "Parent Région Désservie", "ubs" ), "parent_item_colon" => __( "Parent Région Désservie:", "ubs" ), "search_items" => __( "Search Régions désservies", "ubs" ), "popular_items" => __( "Popular Régions désservies", "ubs" ), "separate_items_with_commas" => __( "Separate Régions désservies with commas", "ubs" ), "add_or_remove_items" => __( "Add or remove Régions désservies", "ubs" ), "choose_from_most_used" => __( "Choose from the most used Régions désservies", "ubs" ), "not_found" => __( "No Régions désservies found", "ubs" ), "no_terms" => __( "No Régions désservies", "ubs" ), "items_list_navigation" => __( "Régions désservies list navigation", "ubs" ), "items_list" => __( "Régions désservies list", "ubs" ), "back_to_items" => __( "Back to Régions désservies", "ubs" ), ];  $args = [ "label" => __( "Régions desservie", "ubs" ), "labels" => $labels, "public" => true, "publicly_queryable" => true, "hierarchical" => true, "show_ui" => true, "show_in_menu" => true, "show_in_nav_menus" => true, "query_var" => true, "rewrite" => [ 'slug' => 'regions_desservies', 'with_front' => true, ], "show_admin_column" => true, "show_in_rest" => true, "show_tagcloud" => false, "rest_base" => "regions_desservies", "rest_controller_class" => "WP_REST_Terms_Controller", "show_in_quick_edit" => true, "show_in_graphql" => false, ]; register_taxonomy( "regions_desservies", [ "membre" ], $args );}add_action( 'init', 'cptui_register_my_taxes' );

Here the Custom Fields code

<?php

add_filter( "rwmb_meta_boxes", "membres_custom_fields_register_meta_boxes" );

function your_prefix_register_meta_boxes( $meta_boxes ) {

 $prefix = "";

 $meta_boxes[] = [

 "title" => esc_html__( "Infos du membre", "ubs" ),

 "id" => "infos-du-membre",

 "context" => "after_title",

 "autosave" => true,

 "fields" => [

 [

 "type" => "heading",

 "name" => esc_html__( "Présentation", "ubs" ),

 ],

 [

 "type" => "text",

 "name" => esc_html__( "Titre", "ubs" ),

 "id" => $prefix . "titre",

 "desc" => esc_html__( "Nom du membre ou de sa compagnie", "ubs" ),

 "placeholder" => esc_html__( "Nom", "ubs" ),

 "size" => 50,

 ],

 [

 "type" => "image",

 "name" => esc_html__( "Photo ou logo", "ubs" ),

 "id" => $prefix . "photo_ou_logo",

 "max_file_uploads" => 1,

 "force_delete" => true,

 "after" => "L"image doit peser 500 ko maximum",

 "class" => "ubs-upload-logo",

 ],

 [

 "type" => "text",

 "name" => esc_html__( "Description", "ubs" ),

 "id" => $prefix . "description",

 "desc" => esc_html__( "Description du membre, ses services, produits ou compagnie", "ubs" ),

 "placeholder" => esc_html__( "Ajoutez un texte vendeur", "ubs" ),

 "size" => 300,

 ],

 [

 "type" => "select_advanced",

 "name" => esc_html__( "Région", "ubs" ),

 "id" => $prefix . "region",

 "desc" => esc_html__( "Sélectionnez la région desservie par le membre", "ubs" ),

 "options" => [

 "Abitibi-Témiscamingue" => esc_html__( "Abitibi-Témiscamingue", "ubs" ),

 "Bas-Saint-Laurent" => esc_html__( "Bas-Saint-Laurent", "ubs" ),

 "Capitale-Nationale" => esc_html__( "Capitale-Nationale", "ubs" ),

 "Centre-du-Québec" => esc_html__( "Centre-du-Québec", "ubs" ),

 "Chaudière-Appalaches" => esc_html__( "Chaudière-Appalaches", "ubs" ),

 "Côte-Nord" => esc_html__( "Côte-Nord", "ubs" ),

 "Estrie" => esc_html__( "Estrie", "ubs" ),

 "Gaspésie–Îles-de-la-Madeleine" => esc_html__( "Gaspésie–Îles-de-la-Madeleine", "ubs" ),

 "Lanaudière" => esc_html__( "Lanaudière", "ubs" ),

 "Laurentides" => esc_html__( "Laurentides", "ubs" ),

 "Laval" => esc_html__( "Laval", "ubs" ),

 "Mauricie" => esc_html__( "Mauricie", "ubs" ),

 "Montérégie" => esc_html__( "Montérégie", "ubs" ),

 "Montréal" => esc_html__( "Montréal", "ubs" ),

 "Nord-du-Québec" => esc_html__( "Nord-du-Québec", "ubs" ),

 "Outaouais" => esc_html__( "Outaouais", "ubs" ),

 "Saguenay–Lac-Saint-Jean" => esc_html__( "Saguenay–Lac-Saint-Jean", "ubs" ),

 ],

 "multiple" => true,

 "js_options" => [

 "allowClear" => true,

 ],

 ],

 [

 "type" => "url",

 "name" => esc_html__( "Vidéo promotionnelle", "ubs" ),

 "id" => $prefix . "video_promotionnelle",

 "desc" => esc_html__( "Ajoutez l"URL Youtube de la vidéo", "ubs" ),

 "placeholder" => esc_html__( "https://youtu.be/5HM2zx_Zf3U", "ubs" ),

 "size" => 50,

 ],

 [

 "type" => "divider",

 ],

 [

 "type" => "heading",

 "name" => esc_html__( "Contact", "ubs" ),

 ],

 [

 "type" => "url",

 "name" => esc_html__( "Site web", "ubs" ),

 "id" => $prefix . "site_web",

 "desc" => esc_html__( "Ajoutez l"adresse de son site web", "ubs" ),

 "placeholder" => esc_html__( "monsite.ca", "ubs" ),

 "size" => 50,

 ],

 [

 "type" => "email",

 "name" => esc_html__( "Adresse Email", "ubs" ),

 "id" => $prefix . "adresse_email",

 "desc" => esc_html__( "Ajouter son adresse email professionnel", "ubs" ),

 "placeholder" => esc_html__( "johndoe@monsite.ca", "ubs" ),

 "size" => 50,

 ],

 [

 "type" => "number",

 "name" => esc_html__( "Téléphone", "ubs" ),

 "id" => $prefix . "telephone",

 "step" => "any",

 "placeholder" => esc_html__( "1 819 1234567", "ubs" ),

 ],

 ],

 ];

 return $meta_boxes;

}

Thanks for your help,

  • Patrick Freitas
    • FLS

    Hi Guilherme Negreiros

    I hope you are doing well.

    I did a deep look at your code and I can see you are using metabox.io to generate the meta box, I am afraid I couldn’t find why it isn’t working but I could find some relevant information that can help you.

    On your code it is missing to specify the post type for metabox,

    'post_types' => ['post', 'membre'],

    Here is a simple code that I created using the online tool: https://metabox.io/online-generator/

    add_filter( 'rwmb_meta_boxes', 'your_prefix_register_meta_boxes_2' );
    
    function your_prefix_register_meta_boxes_2( $meta_boxes ) {
        $prefix = '';
    
        $meta_boxes[] = [
            'title'      => esc_html__( 'Untitled Field Group', 'online-generator' ),
            'id'         => 'untitled',
            'post_types' => ['post', 'membre'],
            'context'    => 'normal',
            'fields'     => [
                [
                    'type' => 'button',
                    'name' => esc_html__( 'Button', 'online-generator' ),
                    'id'   => $prefix . 'button_9sa0qef11mb',
                ],
                [
                    'type' => 'checkbox_list',
                    'name' => esc_html__( 'Checkbox List', 'online-generator' ),
                    'id'   => $prefix . 'checkbox_list_whiw7sf6ac',
                ],
            ],
        ];
    
        return $meta_boxes;
    }

    And it worked fine on your custom post type:

    [attachments are only viewable by logged-in members]

    So I suggest trying to re-create the metabox using that online tool, and then specify the post-type to check if your issue is gone.

    About how to place the code, since you are using a custom plugin I would do on this way:

    – Create the plugin PHP file to handle the comments and includes
    – Create a folder includes and inside it place the functions in different files
    – Call the files on your plugin PHP, for example

    includes/custom-post.php 
    includes/custom-taxonomy.php 
    includes/custom-meta.php 

    https://wordpress.stackexchange.com/questions/7398/how-to-include-php-files-in-plugins-the-correct-way

    Best Regards
    Patrick Freitas

  • Guilherme Negreiros
    • Site Builder, Child of Zeus

    Hi Patrick,

    Same issue, CTP and Tax are OK but Custom Fields aren’t show.
    Attached is my plugin.

    <?php
    
    /*
      Plugin Name: UBS Membres
      Description: Crée CPT Membres
      Version: 3.0.0
      Author: Guilherme Negreiros
      Author URI: https://unbonsite.ca/
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
    	exit; // Exit if accessed directly
    }
    
    include "includes/custom-post.php";
    include "includes/custom-taxonomy.php";
    include "includes/custom-meta.php";
    
    ?>
  • Guilherme Negreiros
    • Site Builder, Child of Zeus
    <?php
    add_filter( 'rwmb_meta_boxes', 'your_prefix_register_meta_boxes' );
    
    function your_prefix_register_meta_boxes( $meta_boxes ) {
        $prefix = '';
    
        $meta_boxes[] = [
            'title'   => esc_html__( 'Field group 1', 'ubs' ),
            'context' => 'normal',
    		'post_types' => ['post', 'membre'],
            'fields'  => [
                [
                    'type' => 'wysiwyg',
                    'name' => esc_html__( 'Description du membre', 'ubs' ),
                    'id'   => $prefix . 'description_du_membre',
                ],
                [
                    'type' => 'text',
                    'name' => esc_html__( 'Video Youtube', 'ubs' ),
                    'id'   => $prefix . 'video_youtube',
                    'desc' => esc_html__( 'Entrez le lient au complet', 'ubs' ),
                ],
                [
                    'type'     => 'select',
                    'name'     => esc_html__( 'Type de membre', 'ubs' ),
                    'id'       => $prefix . 'type_de_membre',
                    'options'  => [
                        'Utilisateur' => esc_html__( 'Utilisateur', 'ubs' ),
                        'Soutien'     => esc_html__( 'Soutien', 'ubs' ),
                        'Employé'    => esc_html__( 'Employé', 'ubs' ),
                    ],
                    'multiple' => true,
                ],
                [
                    'type'     => 'select',
                    'name'     => esc_html__( 'Offre', 'ubs' ),
                    'id'       => $prefix . 'offre',
                    'options'  => [
                        'Produits' => esc_html__( 'Produits', 'ubs' ),
                        'Services' => esc_html__( 'Services', 'ubs' ),
                        'Autres'   => esc_html__( 'Autres', 'ubs' ),
                    ],
                    'multiple' => true,
                ],
                [
                    'type' => 'divider',
                ],
                [
                    'type' => 'heading',
                    'name' => esc_html__( 'Coordonnées', 'ubs' ),
                ],
                [
                    'type'        => 'text',
                    'name'        => esc_html__( 'Adresse', 'ubs' ),
                    'id'          => $prefix . 'adresse',
                    'placeholder' => esc_html__( '123, rue du progress', 'ubs' ),
                ],
                [
                    'type' => 'text',
                    'name' => esc_html__( 'Ville', 'ubs' ),
                    'id'   => $prefix . 'ville',
                ],
                [
                    'type' => 'text',
                    'name' => esc_html__( 'Province', 'ubs' ),
                    'id'   => $prefix . 'province',
                ],
                [
                    'type' => 'text',
                    'name' => esc_html__( 'Code postale', 'ubs' ),
                    'id'   => $prefix . 'code_postale',
                ],
                [
                    'type' => 'fieldset_text',
                    'name' => esc_html__( 'Fieldset Text', 'ubs' ),
                    'id'   => $prefix . 'fieldset_text_3me4e3q5q3r',
                ],
                [
                    'type'        => 'text',
                    'name'        => esc_html__( 'Téléphone', 'ubs' ),
                    'id'          => $prefix . 'telephone',
                    'placeholder' => esc_html__( '1(819) 123-4567', 'ubs' ),
                    'clone'       => true,
                ],
                [
                    'type'        => 'text',
                    'name'        => esc_html__( 'Adresse courriel', 'ubs' ),
                    'id'          => $prefix . 'adresse_courriel',
                    'placeholder' => esc_html__( 'membre@macompagnie.ca', 'ubs' ),
                ],
                [
                    'type' => 'url',
                    'name' => esc_html__( 'Site web', 'ubs' ),
                    'id'   => $prefix . 'site_web',
                ],
            ],
        ];
    
        return $meta_boxes;
    }
  • Guilherme Negreiros
    • Site Builder, Child of Zeus
    <?php
    add_action( 'init', 'membres_register_post_type' );
    function membres_register_post_type() {
    	$args = [
    		'label'  => esc_html__( 'Membres', 'text-domain' ),
    		'labels' => [
    			'menu_name'          => esc_html__( 'Membres', 'ubs' ),
    			'name_admin_bar'     => esc_html__( 'Membre', 'ubs' ),
    			'add_new'            => esc_html__( 'Ajouter Membre', 'ubs' ),
    			'add_new_item'       => esc_html__( 'Ajouter nouveau Membre', 'ubs' ),
    			'new_item'           => esc_html__( 'New Membre', 'ubs' ),
    			'edit_item'          => esc_html__( 'Edit Membre', 'ubs' ),
    			'view_item'          => esc_html__( 'View Membre', 'ubs' ),
    			'update_item'        => esc_html__( 'View Membre', 'ubs' ),
    			'all_items'          => esc_html__( 'Tous les Membres', 'ubs' ),
    			'search_items'       => esc_html__( 'Search Membres', 'ubs' ),
    			'parent_item_colon'  => esc_html__( 'Parent Membre', 'ubs' ),
    			'not_found'          => esc_html__( 'No Membres found', 'ubs' ),
    			'not_found_in_trash' => esc_html__( 'No Membres found in Trash', 'ubs' ),
    			'name'               => esc_html__( 'Membres', 'ubs' ),
    			'singular_name'      => esc_html__( 'Membre', 'ubs' ),
    		],
    		'public'              => true,
    		'exclude_from_search' => false,
    		'publicly_queryable'  => true,
    		'show_ui'             => true,
    		'show_in_nav_menus'   => true,
    		'show_in_admin_bar'   => true,
    		'show_in_rest'        => true,
    		'capability_type'     => 'post',
    		'hierarchical'        => true,
    		'has_archive'         => 'nos-membres',
    		'query_var'           => true,
    		'can_export'          => true,
    		'rewrite_no_front'    => false,
    		'show_in_menu'        => true,
    		'menu_position'       => 2,
    		'menu_icon'           => 'dashicons-businessman',
    		'supports' => [
    			'title',
    			'editor',
    			'thumbnail',
    			'custom-fields',
    		],
    		'taxonomies' => [
    			'type-de-membre',
    			'tag',
    		],
    		'rewrite' => true
    	];
    
    	register_post_type( 'membre', $args );
    }
  • Guilherme Negreiros
    • Site Builder, Child of Zeus
    <?php
    add_action( 'init', 'type_membre_register_taxonomy' );
    function type_membre_register_taxonomy() {
    	$args = [
    		'label'  => esc_html__( 'Types de membre', 'ubs' ),
    		'labels' => [
    			'menu_name'                  => esc_html__( 'Types de membre', 'ubs' ),
    			'all_items'                  => esc_html__( 'Tous les Types de membre', 'ubs' ),
    			'edit_item'                  => esc_html__( 'Edit Type de membre', 'ubs' ),
    			'view_item'                  => esc_html__( 'View Type de membre', 'ubs' ),
    			'update_item'                => esc_html__( 'Update Type de membre', 'ubs' ),
    			'add_new_item'               => esc_html__( 'Add new Type de membre', 'ubs' ),
    			'new_item'                   => esc_html__( 'New Type de membre', 'ubs' ),
    			'parent_item'                => esc_html__( 'Parent Type de membre', 'ubs' ),
    			'parent_item_colon'          => esc_html__( 'Parent Type de membre', 'ubs' ),
    			'search_items'               => esc_html__( 'Search Types de membre', 'ubs' ),
    			'popular_items'              => esc_html__( 'Popular Types de membre', 'ubs' ),
    			'separate_items_with_commas' => esc_html__( 'Separate Types de membre with commas', 'ubs' ),
    			'add_or_remove_items'        => esc_html__( 'Add or remove Types de membre', 'ubs' ),
    			'choose_from_most_used'      => esc_html__( 'Choose most used Types de membre', 'ubs' ),
    			'not_found'                  => esc_html__( 'No Types de membre found', 'ubs' ),
    			'name'                       => esc_html__( 'Types de membre', 'ubs' ),
    			'singular_name'              => esc_html__( 'Type de membre', 'ubs' ),
    		],
    		'public'               => true,
    		'show_ui'              => true,
    		'show_in_menu'         => true,
    		'show_in_nav_menus'    => true,
    		'show_tagcloud'        => true,
    		'show_in_quick_edit'   => true,
    		'show_admin_column'    => true,
    		'show_in_rest'         => true,
    		'hierarchical'         => true,
    		'query_var'            => true,
    		'sort'                 => false,
    		'rewrite_no_front'     => false,
    		'rewrite_hierarchical' => false,
    		'rewrite' => true
    	];
    	register_taxonomy( 'type-de-membre', [ 'membre' ], $args );
    }
  • Patrick Freitas
    • FLS

    Hi Guilherme Negreiros

    This is weird, it worked fine for me:

    [attachments are only viewable by logged-in members]

    But just to check if we are on the same page, had you enabled the https://wordpress.org/plugins/meta-box/ the shared code to create custom fields is from this plugin so it is required to be enabled.

    A plugin that I usually use is the ACF https://wordpress.org/plugins/advanced-custom-fields/

    Best Regards
    Patrick Freitas

  • Laura Zeballos
    • Staff

    Hi Guilherme Negreiros ,

    Hope this message finds you well. As Patrick said before, the custom code you have for custom fields is being injected into a Metabox filter:

    add_filter( 'rwmb_meta_boxes', 'your_prefix_register_meta_boxes' );

    rwmb_meta_boxes is the filter you can find at Metabox documentation on this link: https://docs.metabox.io/filters/, so if the plugin is not active that snippet will not work.

    Can you share with us where did get that code? Thanks

    Looking forward to hearing from you soon,

    Laura

  • Laura Zeballos
    • Staff

    Hi Guilherme Negreiros ,

    Thanks for providing that, but I could not find which option did you use to generate the code. But like I said before if you do not have Metabox plugin installed that code will not work, since Metabox is handling the process to manage the custom fields, even if you inject the code using a different filter, it will not work either if Metabox is not enabled.

    But, I did copy and paste your code and enable Metabox plugin and the custom fields are working:

    [attachments are only viewable by logged-in members]

    But just in case I attach the file I did use.

    Let us know if you require additional assistance.

    Kind regards,
    Laura

  • Laura Zeballos
    • Staff

    Hi Guilherme Negreiros ,

    Sorry if we were not clear, the code you provide uses Metabox plugin.

    Custom fields may be complicated to manage without a user interface to help, so you need to code a plugin to manage your custom fields, as Metabox and ACF do, so you may need to develop a similar plugin like those.

    I found this a tutorial from Meta Box plugin about how to make a simple plugin for custom fields without using any other plugin (not even Metabox) https://metabox.io/how-to-create-custom-meta-boxes-custom-fields-in-wordpress/
    It is well explained, hope this helps you.

    Kind regards,
    Laura

  • Guilherme Negreiros
    • Site Builder, Child of Zeus

    Hi Laura,

    I still have some issues with PHP (I’m not a developper :wink:)
    I’ve these error :
    Parse error: syntax error, unexpected ‘/’ in /Users/guilhermenegreiros/Local Sites/test/app/public/wp-content/plugins/ubs-membres/usb-membres.php on line 16
    I’ve tried to change commons without success.
    There is my code:

    <?php
    
    /*
      Plugin Name: UBS Membres
      Description: Crée CPT Membres
      Version: 3.0.0
      Author: Guilherme Negreiros
      Author URI: https://unbonsite.ca/
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
    	exit; // Exit if accessed directly
    }
    
    include plugin_dir_path( __FILE__ ) . './custom-post.php
    include plugin_dir_path( __FILE__ ) . './custom-taxonomy.php
    include plugin_dir_path( __FILE__ ) . './generatewp-16eorn4.php
    
    ?>

    [attachments are only viewable by logged-in members]
    [attachments are only viewable by logged-in members]

  • Laura Zeballos
    • Staff

    Hi Guilherme Negreiros ,

    You are doing it great. The issue on your code is the missing apostrophe ” ‘ ” (close) and the semicolon ” ; ” at the end, it should look like this:

    [attachments are only viewable by logged-in members]

    or:

    <?php
    
    /*
    Plugin Name: UBS Membres
    Description: Crée CPT Membres
    Version: 3.0.0
    Author: Guilherme Negreiros
    Author URI: https://unbonsite.ca/
    */
    
    if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
    }
    
    include plugin_dir_path( __FILE__ ) . './custom-post.php';
    include plugin_dir_path( __FILE__ ) . './custom-taxonomy.php';
    include plugin_dir_path( __FILE__ ) . './generatewp-16eorn4.php';
    
    ?>

    With those corrections, you should not have that error again.

    Let us know if you require additional assistance.

    Kind regards,
    Laura

  • Guilherme Negreiros
    • Site Builder, Child of Zeus

    Hi,
    No more errors.
    But
    No custom taxonomies
    No custom fields

    <?php
    
    /*
    Plugin Name: UBS Membres
    Description: Crée CPT Membres
    Version: 3.0.0
    Author: Guilherme Negreiros
    Author URI: https://unbonsite.ca/
    */
    
    if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
    }
    
    include plugin_dir_path( __FILE__ ) . 'includes/custom-post.php';
    include plugin_dir_path( __FILE__ ) . 'includes/custom-taxonomy.php';
    include plugin_dir_path( __FILE__ ) . 'includes/generatewp-16eorn4.php';
    
    ?>

    [attachments are only viewable by logged-in members]

  • Laura Zeballos
    • Staff

    Hi Guilherme Negreiros ,

    Thanks for sharing, taxonomies were not working since you need to call them before the custom types:

    <?php

    /*
    Plugin Name: UBS Membres
    Description: Crée CPT Membres
    Version: 3.0.0
    Author: Guilherme Negreiros
    Author URI: https://unbonsite.ca/
    */
    
    if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
    }
    include plugin_dir_path( __FILE__ ) . 'includes/custom-taxonomy.php';
    include plugin_dir_path( __FILE__ ) . 'includes/custom-post.php';
    include plugin_dir_path( __FILE__ ) . 'includes/generatewp-16eorn4.php';

    About the Custom fields, the code inside the generatewp-16eorn4.php is registering a class called Membres_Meta_Box but not sure how you should render the metaboxes, is not working as a mu-plugin either, something else is required for that snippet. I did check the link on it https://generatewp.com/snippet/16eorn4/ but there is no information about what the code does or how should be triggered.

    It is working as a mu-plugin on your end?

    Let us know your comments.

    Kind regards,
    Laura

  • Laura Zeballos
    • Staff

    Hi Guilherme Negreiros ,

    Right, well like I explained in my previous reply I did check that link since it was on your generatewp-16eorn4.php file, but I could not find any information about how to use the code, so, I did check the link https://generatewp.com/meta-box/ from the same link, but since I do not have an active membership I can’t access the whole documentation. However, there is a section Examples that you can check to implement that generated code:

    [attachments are only viewable by logged-in members]

    Kindly check those examples to implement the generated code and let us know the results.

    Kind regards,
    Laura