ZOOMY -【実践】投稿時の画像必須を任意にする方法

ZOOMY

はじめに

WordPressテーマ ZOOMYの標準機能では以下のように投稿時の画像アップロードが必須となっています。

画像をアップロードせず、投稿すると下記のエラーが発生します。

このページでは画像のアップロードを必須から任意に変更し、かつ投稿記事に対してダミー画像をつける方法を説明します。

画像のアップロードを必須から任意に変更

functions/membership/blog.phpを修正(2箇所)

1箇所目:blog.phpの116行から118行目をコメントアウト

blog.phpの116行から118行目

修正前:

		if ( empty( $formdata['main_image'] ) ) {
			$error_messages[] = sprintf( __( '%s is required.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) ) . sprintf( __( 'Please select a %s.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) );
		}

修正後:

		//if ( empty( $formdata['main_image'] ) ) {
		//	$error_messages[] = sprintf( __( '%s is required.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) ) . sprintf( __( 'Please select a %s.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) );
		//}

2箇所目:blog.phpの377行から379行目をコメントアウト

blog.phpの377行から379行目

修正前:

		if ( empty( $formdata['main_image'] ) ) {
			$error_messages[] = sprintf( __( '%s is required.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) ) . sprintf( __( 'Please select a %s.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) );
		}

修正後:

		//if ( empty( $formdata['main_image'] ) ) {
		//	$error_messages[] = sprintf( __( '%s is required.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) ) . sprintf( __( 'Please select a %s.', 'tcd-w' ), __( 'Main photo', 'tcd-w' ) );
		//}

画面文字を(必須)から(任意)に修正

membership-template/edit_blog.phpの148行目を修正

修正前:( ‘ (Requied)’, ‘tcd-w’ )

'overlay_headline' => '<h3 class="p-membership-form__image-upload__label-headline">'
 . __( 'Select main photo', 'tcd-w' ) . '<span class="p-membership-form__remark">'
 . __( ' (Requied)', 'tcd-w' ) . '</span></h3>',

修正後:( ‘ (任意)’, ‘tcd-w’ )

'overlay_headline' => '<h3 class="p-membership-form__image-upload__label-headline">'
 . __( 'Select main photo', 'tcd-w' ) . '<span class="p-membership-form__remark">'
 . __( '(任意)', 'tcd-w' ) . '</span></h3>',

(任意)箇所のclassは p-membership-form__remark です。

結果:

テキストを必須から任意に変更

画像の差し替え

画像がアップロードされていないときに表示される NO IMAGE画像を差し替えます。差し替え対象の画像は以下の2枚です。

/themes/zoomy_tcd067/img/no-image-300×300.gif
/themes/zoomy_tcd067/img/no-image-600×600.gif

差し替え前:

ZOOMY標準のNO IMAGE

差し替え後:

差し替え後の画像

NO IMAGE画像を置き換えられるようにする対応

投稿内容変更時、ZOOMYの標準ロジックでは旧の画像と新の画像のURLを比較しています。比較してURLが異なれば画像が更新されているので新の画像に置き換えるロジックです。

今回の修正で旧画像のURLが取得できなくなりましたので、このURL比較ロジックを修正する必要があります。

functions/membership/blog.phpの修正 493行目

493行目の「$main_image_old && 」を削除します。

修正前:

					// 画像urlが変わっていれば
					$main_image_old = get_post_meta( $post_id, 'main_image', true );
					if ( $main_image_old && $main_image_old != $formdata['main_image'] ) {
						// 旧画像ファイルを削除
						$_main_image_old = get_post_meta( $post_id, '_main_image', true );
						tcd_membership_delete_image_from_meta( $_main_image_old );

						// テンポラリー画像からmain_imageのurlに対応する画像情報配列を取得
						$_main_image = tcd_membership_get_temp_image( $formdata['main_image'], true );

						update_post_meta( $post_id, 'main_image', $formdata['main_image'] );
						update_post_meta( $post_id, '_main_image', $_main_image );
					}

修正後:

				if ( $post_id ) {
					// タクソノミー保存
					wp_set_object_terms( $post_id, intval( $formdata['category'] ), 'category', false );

					// 画像urlが変わっていれば
					$main_image_old = get_post_meta( $post_id, 'main_image', true );
					if ( $main_image_old != $formdata['main_image'] ) {
						// 旧画像ファイルを削除
						$_main_image_old = get_post_meta( $post_id, '_main_image', true );
						tcd_membership_delete_image_from_meta( $_main_image_old );

						// テンポラリー画像からmain_imageのurlに対応する画像情報配列を取得
						$_main_image = tcd_membership_get_temp_image( $formdata['main_image'], true );

						update_post_meta( $post_id, 'main_image', $formdata['main_image'] );
						update_post_meta( $post_id, '_main_image', $_main_image );
					}

最終結果

画像をアップロードしなくても記事を投稿できるようになりました。

最終結果

参考

下記、TCD LABOの記事を実践しています。

TCDテーマZOOMY:ブログ投稿時に画像を必須項目から外す方法

コメント

タイトルとURLをコピーしました