Братва,
Я пытаюсь добавить некоторые пользовательские поля в пользовательскую таксономию.
Я создал таксономию, все функции в соответствии с этим руководством:
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ó la mision.','mision' ); ?></p>
</div>
<div class="form-field">
<label for="term_meta[anio]"><?php _e( 'Año', 'mision' ); ?></label>
<input type="text" name="term_meta[anio]" id="term_meta[anio]" value="">
<p class="description"><?php _e( 'Tema del que trató 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á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ó 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ó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ó 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ó no es PNG. Só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
Задача ещё не решена.
Других решений пока нет …