Wordpress - 将自定义字段添加到自定义分类中

时间:2014-12-03 01:09:30

标签: php wordpress custom-taxonomy

配合,

我尝试将自定义字段添加到自定义分类中。 我已根据本教程创建了分类法,所有函数: 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']));
            }
        });

    }
}

有谁知道我搞砸了哪里?

提前致谢!

巴勃罗

0 个答案:

没有答案