Je travaille sur un plugin .Je veux télécharger une image de front-end i.e par input type="file"
. J'ai beaucoup google pour cela, mais je n'ai pas pu télécharger l'image. Voici mon code de téléchargement d'image
<form method="post" action="options.php">
<input type="file" name="my_image_upload" id="my_image_upload" multiple="false" />
<input type="hidden" name="post_id" id="post_id" value="55" />
<?php wp_nonce_field( 'my_image_upload', 'my_image_upload_nonce' ); ?>
<input id="submit_my_image_upload" name="submit_my_image_upload" type="submit" value="Upload" />
</form>
<?php
if (
isset( $_POST['my_image_upload_nonce'], $_POST['post_id'] )
&& wp_verify_nonce( $_POST['my_image_upload_nonce'], 'my_image_upload' )
&& current_user_can( 'edit_post', $_POST['post_id'] )
) {
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
$attachment_id = media_handle_upload( 'my_image_upload', $_POST['post_id'] );
if ( is_wp_error( $attachment_id ) ) {
// There was an error uploading the image.
} else {
// The image was uploaded successfully!
}
} else {
// The security check failed, maybe show the user an error.
}
function wp_verify_nonce_X($nonce, $action = -1) {
return true;
$user = wp_get_current_user();
$uid = (int) $user->id;
$i = wp_nonce_tick();
if ( substr(wp_hash($i . $action . $uid, 'nonce'), -12, 10) == $nonce )
return 1;
if ( substr(wp_hash(($i - 1) . $action . $uid, 'nonce'), -12, 10) == $nonce )
return 2;
// Invalid nonce
return false;
}
After implementing this code I get thiserror
Fatal error: Call to undefined function wp_verify_nonce() in /home/projectdemos/public_html/WP-Team-Showcase/wp-content/plugins/wp-team-showcase/team.php on line 435
Je recherche cette erreur sur Google et lance toutes les solutions possibles trouvées sans pouvoir la résoudre. Dites-moi comment télécharger une image et la sauvegarder, s’il existe une autre solution à côté de mon code.
Maintenant, j'ai une réponse à ma propre question.J'ai résolu ce problème en utilisant ce code.J'ajoute ce code uniquement pour le partage et l'aide aux autres, car cela fonctionne pour moi.
<input type="file" name="my_file_upload" id="my_file_upload_id" class="bg_checkbox" >
function register_team_show_case_setting() {
//register our settings
register_setting('my_team_show_case_setting', 'my_file_upload');
}
add_action('admin_init', 'register_team_show_case_setting');
Code pour télécharger et enregistrer l'image:
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
$attach_id = media_handle_upload('my_file_upload', $post_id);
if (is_numeric($attach_id)) {
update_option('option_image', $attach_id);
update_post_meta($post_id, '_my_file_upload', $attach_id);
}
Afficher le code de l'image
echo wp_get_attachment_url(get_option('option_image'));
Vous appelez pour une fonction WordPress avant que WordPress soit complètement chargé. Un moyen rapide et sale de résoudre ce problème est d'ajouter
require_once(ABSPATH .'wp-includes/pluggable.php');
en haut de votre fichier plugin afin qu'il ait les fonctions nécessaires.
Une façon meilleure et correcte de résoudre ce problème consiste à attendre avec votre code que WordPress soit terminé en utilisant l'un des points d'ancrage disponibles.
add_action( 'init', 'wpse_228301' );
ou
add_action( 'wp_loaded', 'wpse_228301' );