私はプラグインに取り組んでいます。フロントエンドから画像をアップロードしたい、すなわちinput type="file"
。私はそれのためにグーグルの多くをしましたが、画像をアップロードすることができませんでした。
<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
私はこのエラーをグーグルし、それを通して発見された全ての可能な解決策を実行するが、それを解決することができなかった。このコード以外に解決策がある場合は、画像をアップロードして保存する方法を教えてください。
今私は私自身の質問に対する答えを持っています。私はこのコードを使用してこの問題を解決しました。
<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');
画像をアップロードして保存するためのコード:
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);
}
画像コードを表示
echo wp_get_attachment_url(get_option('option_image'));
WordPressが完全にロードされる前にWordPress関数を呼び出します。これを直す簡単で汚い方法は追加することです
require_once(ABSPATH .'wp-includes/pluggable.php');
プラグインファイルの先頭にあるので必要な機能があります。
これを解決するためのより良いそして正しい方法はWordPressが利用可能なフックの1つを使って行われるまであなたのコードで待つことです
add_action( 'init', 'wpse_228301' );
または
add_action( 'wp_loaded', 'wpse_228301' );