Încărcare fișiere în metabox Wordpress pentru postări personalizate
Sunt relativ nou în dezvoltarea WordPress și m-am blocat la această problemă. Am creat un tip de postare personalizată care apare în meniul de administrare. Am nevoie de un metabox în acesta cu un câmp pentru încărcarea fișierelor. Metabox-ul apare corect dar fișierul nu este salvat.
Folosesc următorul cod pentru aceasta. Orice ajutor ar fi foarte apreciat.
//////////////////Cele mai bune practici///////////////
add_action( 'init', 'wpb_register_cpt_best_practices' );
function wpb_register_cpt_best_practices() {
$labels = array(
'name' => _x( 'Cele mai bune practici', 'cele mai bune practici' ),
'singular_name' => _x( 'Cea mai bună practică', 'cea mai bună practică' ),
'add_new' => _x( 'Adaugă nou', 'cea mai bună practică' ),
'add_new_item' => _x( 'Adaugă practică nouă', 'cea mai bună practică' ),
'edit_item' => _x( 'Editează practica', 'cea mai bună practică' ),
'new_item' => _x( 'Practică nouă', 'cea mai bună practică' ),
'view_item' => _x( 'Vezi practica', 'cea mai bună practică' ),
'search_items' => _x( 'Caută practici', 'cea mai bună practică' ),
'not_found' => _x( 'Nu s-au găsit practici', 'cea mai bună practică' ),
'not_found_in_trash' => _x( 'Nu s-au găsit practici în Coș', 'cea mai bună practică' ),
'parent_item_colon' => _x( 'Practica părinte:', 'cea mai bună practică' ),
'menu_name' => _x( 'Cele mai bune practici', 'cea mai bună practică' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array( 'title', 'editor', 'revisions' ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type( 'best practice', $args );
}
$key_bp = "best practice";
$meta_boxes_bp = array(
"document" => array(
"name" => "document",
"title" => "Document Cele mai bune practici",
"description" => "Atașează documentul cu cele mai bune practici.",
"type" => "file")
);
function wpb_create_meta_box3() {
global $key_bp;
if( function_exists( 'add_meta_box' ) ) {
add_meta_box( 'new-meta-boxes', ucfirst( $key_bp ) . ' Document', 'display_meta_box3', 'best practice', 'normal', 'high' );
}
}
function display_meta_box3() {
global $post, $meta_boxes_bp, $key_bp;
?>
<div class="form-wrap">
<?php
wp_nonce_field( plugin_basename( __FILE__ ), $key_bp . '_wpnonce', false, true );
foreach($meta_boxes_bp as $meta_box) {
$data = get_post_meta($post->ID, $key_bp, true);
?>
<div class="form-field form-required">
<label for="<?php echo $meta_box[ 'name' ]; ?>"><?php echo $meta_box[ 'title' ]; ?></label>
<input type="file" name="<?php echo $meta_box[ 'name' ]; ?>" value="<?php echo (isset($data[ $meta_box[ 'name' ] ]) ? $data[ $meta_box[ 'name' ] ] : ''); ?>" />
<p><?php echo $meta_box[ 'description' ]; ?>
<?php //print_r($data);
?></p>
</div>
<?php } ?>
</div>
<?php
}
function wpb_save_meta_box3( $post_id ) {
global $post, $meta_boxes_bp, $key_bp;
foreach( $meta_boxes_bp as $meta_box ) {
if (isset($_POST[ $meta_box[ 'name' ] ])) {
$data[ $meta_box[ 'name' ] ] = $_POST[ $meta_box[ 'name' ] ];
}
}
if (!isset($_POST[ $key_bp . '_wpnonce' ]))
return $post_id;
if ( !wp_verify_nonce( $_POST[ $key_bp . '_wpnonce' ], plugin_basename(__FILE__) ) )
return $post_id;
if ( !current_user_can( 'edit_post', $post_id ))
return $post_id;
update_post_meta( $post_id, $key_bp, $data );
}
add_action( 'admin_menu', 'wpb_create_meta_box3' );
add_action( 'save_post', 'wpb_save_meta_box3' );
Pentru încărcarea fișierelor în metabox-uri în postări personalizate în WordPress, vă rugăm să consultați linkul de mai jos:
sau puteți utiliza următoarele plugin-uri:
https://wordpress.org/plugins/simple-fields/
http://www.advancedcustomfields.com/
Ambele plugin-uri sunt excelente pentru câmpuri personalizate. De asemenea, puteți crea câmpuri repetabile.

Vă rugăm să vă asigurați că răspunsul în sine poate rezolva problema. Răspunsurile care conțin doar link-uri sau sunt dominate de link-uri aproape niciodată nu reușesc să facă acest lucru. Cel mai bine este să adăugați codul relevant și explicația în răspuns.

Acest tip de răspunsuri este dăunător pentru site. Vă rugăm să vă îmbunătățiți răspunsurile

Am votat pozitiv. Nu ascultați de cei care spun că nu ar fi trebuit să răspundeți atât de prost. Răspunsul dumneavoastră ne-a ajutat ;) mulțumesc

Nu a funcționat pentru mine, a trebuit să adaug encytype="multipart/form-data" la formularul edit.php folosind răspunsul acceptat aici: https://stackoverflow.com/questions/46409457/files-consistently-empty-in-wordpress-post-meta-upload-box
