私のプラグインには、ユーザーが複数のファイルをアップロードできるcontact usフォームがあり、それはwp-contents/uploads/2014/10
フォルダーにアップロードされます。アップロードは機能していますが、このアップロードされたファイルと入力されたユーザーデータを電子メールで管理者に送信する必要があります。添付ファイル付きのメールを送信する方法がわかりません。
これまでに試したコードは次のとおりです。
if(isset($_POST['Save'])){
/* store post user data to variables */
if (!function_exists('wp_handle_upload'))
require_once( ABSPATH . 'wp-admin/includes/file.php' );
$files = $_FILES['my_files'];
$upload_overrides = array('test_form' => false);
foreach ($files['name'] as $key => $value) {
if ($files['name'][$key]) {
$file = array(
'name' => $files['name'][$key],
'type' => $files['type'][$key],
'tmp_name' => $files['tmp_name'][$key],
'error' => $files['error'][$key],
'size' => $files['size'][$key]
);
$movefile = wp_handle_upload($file, $upload_overrides);
$url[] = $movefile['url'];
}
}
$to = '[email protected]';
$subject = 'Contact Us';
$message =" Haiii";
$headers[] = 'From: '.get_option( 'blogname' ).' <[email protected]>';
add_filter( 'wp_mail_content_type', 'my_custom_email_content_type' );
if(wp_mail( $to, $subject, $message, $headers, $url ))
echo 'Mail send';
else
echo 'Failed';
function my_custom_email_content_type() {
return 'text/html';
}
これはどんなメールも送信しませんまたエラーを示します
警告:call_user_func_array()はパラメータ1が有効なコールバックであること、関数 'my_custom_email_content_type'が見つからないこと、または無効な関数名であることを想定しています
この問題を解決するための提案はありますか?
それがあなたのすべての問題を解決するかどうかわからないが、:
一般的によくフォーマットされたコードはデバッグが簡単です。例えば。コードに閉じ括弧がありません。それに加えて、if/else(if)ステートメントを中括弧で書くことをお勧めします。素敵なインデントも役立ちます。 WordPress - PHPコーディング規約 を読むことをお勧めします。
あなたのコードに関して:
wp_mail()
codexページに記載されているように、 wp_mail_content_type
フィルタは、削除する必要があります。問題を避けるためにそれを追加する。$attachment
パラメータのファイルは、パスとして指定する必要があります。私はあなたのコードを少し更新しました:
if( isset( $_POST[ 'Save' ] ) ) {
function my_custom_email_content_type( $content_type ) {
return 'text/html';
}
if ( ! function_exists( 'wp_handle_upload' ) ) {
require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
$files = $_FILES[ 'my_files' ];
$upload_overrides = array( 'test_form' => false );
$attachments = array();
foreach ( $files['name'] as $key => $value ) {
if ( $files[ 'name' ][ $key ] ) {
$file = array(
'name' => $files[ 'name' ][ $key ],
'type' => $files[ 'type' ][ $key ],
'tmp_name' => $files[ 'tmp_name' ][ $key ],
'error' => $files[ 'error' ][ $key ],
'size' => $files[ 'size' ][ $key ]
);
$movefile = wp_handle_upload(
$file,
$upload_overrides
);
$attachments[] = $movefile[ 'file' ];
}
}
$to = '[email protected]';
$subject = 'Contact Us';
$message = 'Haiii';
$headers[] = 'From: ' . get_option( 'blogname' ) . ' <[email protected]>';
add_filter(
'wp_mail_content_type',
'my_custom_email_content_type'
);
$wp_mail_return = wp_mail(
$to,
$subject,
$message,
$headers,
$attachments
);
if( $wp_mail_return ) {
echo 'Mail send';
} else {
echo 'Failed';
}
remove_filter(
'wp_mail_content_type',
'my_custom_email_content_type'
);
}