WordPress — добавление пользовательских полей в пользовательские таксономии

Братва,

Я пытаюсь добавить некоторые пользовательские поля в пользовательскую таксономию.
Я создал таксономию, все функции в соответствии с этим руководством:
https://pippinsplugins.com/adding-custom-meta-fields-to-taxonomies/

Но пользовательские поля не отображаются, и я не получаю ошибки.

Это кусок кода, который имеет значение …

class PB_Institucional {
public function __construct(){
$this->register_post_type();
$this->taxonomies();
$this->metaboxes();
$this->add_taxonomies_custom_fields();
}

public function register_post_type(){
$labels = array(
'name'                => __( 'Paginas Institucionales', 'text-domain' ),
'singular_name'       => __( 'Pagina institucional', 'text-domain' ),
'add_new'             => _x( 'Agregar Pagina institucional', 'text-domain', 'text-domain' ),
'add_new_item'        => __( 'Agregar Pagina institucional', 'text-domain' ),
'edit_item'           => __( 'Editar Pagina institucional', 'text-domain' ),
'new_item'            => __( 'Nuevo Pagina institucional', 'text-domain' ),
'view_item'           => __( 'Ver Pagina institucional', 'text-domain' ),
'search_items'        => __( 'Buscar Paginas Institucionales', 'text-domain' ),
'not_found'           => __( 'No se encontraron Paginas Institucionales', 'text-domain' ),
'not_found_in_trash'  => __( 'No se encontraron Paginas Institucionales en la papelera', 'text-domain' ),
'parent_item_colon'   => __( 'Pagina institucional Padre:', 'text-domain' ),
'menu_name'           => __( 'Institucional', 'text-domain' ),
'parent'              => __('Pagina institucional Contenedor', 'text-domain'),
);

$args = array(
'labels'              => $labels,
'hierarchical'        => true,
'description'         => 'Paginas institucionales de OLADE',
'taxonomies'          => array(),
'public'              => true,
'show_ui'             => true,
'show_in_menu'        => true,
'show_in_admin_bar'   => true,
'menu_position'       => 25,
'menu_icon'           => admin_url() . 'images/project.png',
'show_in_nav_menus'   => true,
'publicly_queryable'  => true,
'exclude_from_search' => false,
'has_archive'         => true,
'query_var'           => 'pb_institucional',
'can_export'          => true,
'rewrite'             => array(
'slug' => 'pb_institucional/'
),
'capability_type'     => 'post',
'supports'            => array(
'title', 'editor','page-attributes'
)
);
register_post_type('pb_institucional', $args );
}

// Taxonomias
// Mision oficial
// Nombre
// Fecha
// Lugar
// Tema
// Anio
// Documento (PDF)
// Pagina a la que pertenece

// Equipo de apoyo
// Nombre
// Foto
// Cargo
// Mail
// Pagina a la que pertenece
// CV (PDF)

public function taxonomies(){
$taxonomies = array();

$taxonomies['mision'] = array(
'query_var' => 'institucionalMision',
'hierarchical' => false,
'rewrite' => array(
'slug' => 'institucionalMision'
),
'labels' => array(
'name'                => __( 'Mision Oficial', 'text-domain' ),
'singular_name'       => __( 'Mision Oficial', 'text-domain' ),
'add_new'             => _x( 'Agregar Mision Oficial', 'text-domain', 'text-domain' ),
'add_new_item'        => __( 'Agregar Mision Oficial', 'text-domain' ),
'edit_item'           => __( 'Editar Mision Oficial', 'text-domain' ),
'new_item'            => __( 'Nuevo Mision Oficial', 'text-domain' ),
'view_item'           => __( 'Ver Mision Oficial', 'text-domain' ),
'search_items'        => __( 'Buscar Misiones Oficiales', 'text-domain' ),
'not_found'           => __( 'No se encontraron Misiones Oficiales', 'text-domain' ),
'not_found_in_trash'  => __( 'No se encontraron Misiones Oficiales en la papelera', 'text-domain' ),
'parent_item_colon'   => __( 'Mision Oficial Padre:', 'text-domain' ),
'menu_name'           => __( 'Misiones Oficiales', 'text-domain' ),
),

);

$taxonomies['equipo'] = array(
'query_var' => 'institucional_equipo',
'hierarchical' => false,
'rewrite' => array(
'slug' => 'institucional_equipo'
),
'labels' => array(
'name'                => __( 'Integrante Equipo', 'text-domain' ),
'singular_name'       => __( 'Integrante Equipo', 'text-domain' ),
'add_new'             => _x( 'Agregar Integrante Equipo', 'text-domain', 'text-domain' ),
'add_new_item'        => __( 'Agregar Integrante Equipo', 'text-domain' ),
'edit_item'           => __( 'Editar Integrante Equipo', 'text-domain' ),
'new_item'            => __( 'Nuevo Integrante Equipo', 'text-domain' ),
'view_item'           => __( 'Ver Integrante Equipo', 'text-domain' ),
'search_items'        => __( 'Buscar Misiones Oficiales', 'text-domain' ),
'not_found'           => __( 'No se encontraron Integrantes', 'text-domain' ),
'not_found_in_trash'  => __( 'No se encontraron Integrantes en la papelera', 'text-domain' ),
'parent_item_colon'   => __( 'Integrante Equipo Padre:', 'text-domain' ),
'menu_name'           => __( 'Integrantes Equipo', 'text-domain' ),
)
);

$this->register_all_taxonomies( $taxonomies );
}

function register_all_taxonomies( $taxonomies ){
foreach( $taxonomies as $name => $arr ) {
register_taxonomy($name, array('pb_institucional') , $arr );
}
}

function mision_add_custom_fields( $terms ) {
// this will add the custom meta field to the add new term page
?>
<div class="form-field">
<label for="term_meta[fecha]"><?php _e( 'Fecha', 'mision' ); ?></label>
<input type="text" name="term_meta[fecha]" id="term_meta[fecha]" value="">
<p class="description"><?php _e( 'Fecha en formato: YYYY-MM-DD','mision' ); ?></p>
</div>
<div class="form-field">
<label for="term_meta[lugar]"><?php _e( 'Lugar', 'mision' ); ?></label>
<input type="text" name="term_meta[lugar]" id="term_meta[lugar]" value="">
<p class="description"><?php _e( 'Lugar de la mision','mision' ); ?></p>
</div>
<div class="form-field">
<label for="term_meta[tema]"><?php _e( 'Tema', 'mision' ); ?></label>
<textarea name="term_meta[tema]" id="term_meta[tema]"></textarea>
<p class="description"><?php _e( 'Tema del que trat&oacute; la mision.','mision' ); ?></p>
</div>
<div class="form-field">
<label for="term_meta[anio]"><?php _e( 'A&ntilde;o', 'mision' ); ?></label>
<input type="text" name="term_meta[anio]" id="term_meta[anio]" value="">
<p class="description"><?php _e( 'Tema del que trat&oacute; la mision.','mision' ); ?></p>
</div>
<div class="form-field">
<label for="term_meta[documento]"><?php _e( 'Documento', 'mision' ); ?></label>
<input type="text" name="term_meta[documento]" id="term_meta[documento]" value="">
<p class="description"><?php _e( 'Documento de la mision.(PDF)','mision' ); ?></p>
</div>
<div class="form-field">
<label for="term_meta[pag]"><?php _e( 'P&aacute;gina a la que pertenece la mision.', 'mision' ); ?></label>
<input type="text" name="term_meta[pag]" id="term_meta[pag]" value="">
<p class="description"><?php _e( 'Tema del que trat&oacute; la mision.','mision' ); ?></p>
</div>
<?php
}

function add_taxonomies_custom_fields(){
add_action( 'institucionalMision_add_form_fields', 'mision_add_custom_fields', 10, 2 );
}

function metaboxes(){
add_action('add_meta_boxes', function(){
add_meta_box(
'event_details',        // ID
'Detalles de la Pagina institucional',      // Title
'institucional_meta_box',   // Callback
'pb_progproy',                  // Targeted post type
'normal'                    // Position
);
});

function institucional_meta_box($post) {
$progproy_description = get_post_meta($post->ID, 'progproy_description', true);
$event_link = get_post_meta($post->ID, 'event_link', true);
$event_logo = get_post_meta($post->ID, 'event_logo', true);

// Security check
wp_nonce_field('progproy_meta_nonce', 'progproy_nonce');

// Display fields
?>

<p>
<label for="progproy_description">Descripci&oacute;n:</label>
<textarea class="widefat" name="progproy_description" id="progproy_description" cols="30" rows="10"><?php echo $progproy_description; ?></textarea>
</p>
<p>
<label for="event_logo">Logo del Evento:</label>
<input type="file" id="wp_custom_attachment" name="wp_custom_attachment" value="" />
</p>

<?php
}

add_action('save_post', function( $post_id ){
// If we're doing an autosave, return
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;

// If nonce if not present or invalid, return
if (!isset($_POST['events_nonce']) || !wp_verify_nonce($_POST['events_nonce'], 'progproy_meta_nonce')) return;

// Save/Update Data
if (isset($_POST['progproy_description']) && $_POST['progproy_description'] != '') {
update_post_meta($post_id, 'progproy_description', esc_html($_POST['progproy_description']));
}

// Make sure the file array isn't empty
if(!empty($_FILES['wp_custom_attachment']['name'])) {

// Setup the array of supported file types. In this case, it's just PDF.
$supported_types = array('image/png');

// Get the file type of the upload
$arr_file_type = wp_check_filetype(basename($_FILES['wp_custom_attachment']['name']));
$uploaded_type = $arr_file_type['type'];

// Check if the type is supported. If not, throw an error.
if(in_array($uploaded_type, $supported_types)) {

// Use the WordPress API to upload the file
$upload = wp_upload_bits($_FILES['wp_custom_attachment']['name'], null, file_get_contents($_FILES['wp_custom_attachment']['tmp_name']));

if(isset($upload['error']) && $upload['error'] != 0) {
wp_die('Ocurri&oacute; un error al intentar subir el archivo. El error es: ' . $upload['error']);
} else {
add_post_meta($id, 'wp_custom_attachment', $upload);
update_post_meta($id, 'wp_custom_attachment', $upload);
} // end if/else

} else {
wp_die("El tipo de archivo que eligi&oacute; no es PNG. S&oacute;lo puede subirse archivos de formato PNG en este campo.");
} // end if/else

} // end if
if (isset($_POST['event_logo']) && $_POST['event_logo'] != '') {
update_post_meta($post_id, 'event_logo', esc_html($_POST['event_logo']));
}
});

}
}

Кто-нибудь знает, где я все испортил?

Заранее спасибо!

Pablo

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …