Tag:カスタマイズ ( 9 Posts)

非公開固定ページ・投稿を直接表示した時の404.phpの内容を変更する

非公開に設定した投稿や固定ページを表示すると404.phpが表示されます。
他にも下書き投稿、予約投稿なども404.phpが表示されます。
404.phpで「投稿がありません」と表示されるのを、投稿のステータスに合わせて表示をカスタマイズしました。
特に「非公開」記事の場合は、ログインが必要なことを表示して、ログインページにリンクしリダイレクト先に該当の記事のURLを設定しました。

記事のIDと記事のステータスを返します。
function.php
//非公開記事の404表示用
function my_get_404_status( ) {

	global $wp_query;

	if ( is_404() ) {

		if ( $wp_query->found_posts == 0 ) {
			return false;
		}
		
		/* 固定ページ */
		if( isset( $wp_query->queried_object->post_status ) ) {
			
			return array($wp_query->queried_object->ID,$wp_query->queried_object->post_status);
		}
		
		/* 投稿 */
		if ( isset( $wp_query->request ) ) {

			$id = $wpdb->get_var( $wp_query->request );
			return array($id,get_post_status( $id ));
		}
	}
}

記事のステータスに合わせた表示の分岐
404.php
<?php
$my_status_html = '<h3>%1$s</h3>';
if ( list($postid,$status)= my_get_404_status() ) :
	switch( $status ) :
		
		case( 'draft'):
			printf( $my_status_html, 'この投稿は、草稿です。公開していません' );
		break;
		
		case( 'pending'):
			printf( $my_status_html, 'この投稿は、レビュー待ちです。公開していません' );
		break;
		
		case( 'future'):
			printf( $my_status_html, 'この投稿は、近日公開予定です' );
		break;
		
		case( 'private'):

			printf( $my_status_html, 'この投稿は、非公開です。ログインしてください。' );
			
			echo '<p>この記事は<a href="'. get_option('siteurl') .'/wp-login.php?redirect_to='. get_permalink($postid) .'">ログイン</a>しなければ表示できない会員のみ閲覧可能な記事です。</p>';

		break;
	endswitch;
?>
<?php else: ?>
<p>お探しのページが見あたりません。<br />申し訳ございませんが、記事が削除されたかURLが変更になった可能性があります。</p>
<?php endif; ?>
 

※参考にさせて頂きました。
404.php のカスタマイズ

会員のメールアドレス・パスワード変更時にユーザーに通知メールを送らない

会員サイト運営中に、何らかの事情でユーザーのメールアドレスやパスワードを変更する必要が出た時に、Wordpressがユーザー宛てに自動で送信する通知メールを停止する方法です。

function.phpに下記を記載します。

//メールアドレス変更時にメールを送信しない
add_filter( 'send_email_change_email', '__return_false' );
//パスワード変更時にメールを送信しない
add_filter( 'send_password_change_email', '__return_false' );
 

コメント通知のメール本文を変更する

コメントやトラックバックがついた時に送信されるメールの本文を変更します。

//コメント確認メールの本文を変更
function custom_comment_text( $notify_message, $comment_id) {

	// コメント情報
	$comment = get_comment($comment_id);
	// コメントのあった投稿
	$post = get_post($comment->comment_post_ID);
	// 投稿元のドメイン名
	$comment_author_domain = @gethostbyaddr($comment->comment_author_IP);
	// ブログ名(サイト名)
	$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
	// コメント
	$comment_content = wp_specialchars_decode($comment->comment_content);
	//コメントの承認状態
	$comment_approved = ($comment->comment_approved);

	// トラックバック、ピンバック、コメントそれぞれで本文を変更
	switch ( $comment->comment_type ) {
		case 'trackback': // トラックバック
			$notify_message = "「{$post->post_title}」にトラックバックがありました。確認をお願いします。\r\n";
			$notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "========================================\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "トラックバック元: {$comment->comment_author}\r\n";
			$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n";
			$notify_message .= "URL: {$comment->comment_author_url}\r\n";
			$notify_message .= "トラックバックの概要: \r\n";
			$notify_message .= "{$comment_content}\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "========================================\r\n";
			$notify_message .= "\r\n";
			break;
		case 'pingback': // ピンバック
			$notify_message = "「{$post->post_title}」にピンバックがありました。確認をお願いします。\r\n";
			$notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "========================================\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "ピンバック元: {$comment->comment_author}\r\n";
			$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n";
			$notify_message .= "URL: {$comment->comment_author_url}\r\n";
			$notify_message .= "ピンバックの概要: \r\n";
			$notify_message .= "{$comment_content}\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "========================================\r\n";
			$notify_message .= "\r\n";
			break;
		default: // コメント
			$notify_message = "「{$post->post_title}」にコメントがありました。確認をお願いします。\r\n";
			$notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "========================================\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "投稿者: {$comment->comment_author}\r\n";
			$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n";
			$notify_message .= "メールアドレス: {$comment->comment_author_email}\r\n";
			$notify_message .= "URL: {$comment->comment_author_url}\r\n";
			$notify_message .= "コメント: \r\n";
			$notify_message .= "{$comment_content}\r\n";
			$notify_message .= "\r\n";
			$notify_message .= "========================================\r\n";
			$notify_message .= "\r\n";
			break;
	}
 
	//ここから操作用URLの記載
	$notify_message .= "各操作は下記のアドレスから行うことができます。\r\n";
	$notify_message .= "\r\n";

	if($comment_approved != '1'){
		// 承認
		$notify_message .= "承認: \r\n";
		$notify_message .= admin_url("comment.php?action=approve&c=$comment_id") . "\r\n";
	}

	if ( EMPTY_TRASH_DAYS ) {
		// ゴミ箱に移動
		$notify_message .= "ゴミ箱に移動: \r\n";
		$notify_message .= admin_url("comment.php?action=trash&c=$comment_id") . "\r\n";
	}else{
		// 削除
		$notify_message .= "削除: \r\n";
		$notify_message .= admin_url("comment.php?action=delete&c=$comment_id") . "\r\n";
	}

	// スパムとしてマーク
	$notify_message .= "スパムとしてマーク: \r\n";
	$notify_message .= admin_url("comment.php?action=spam&c=$comment_id") . "\r\n";
	
	// 未承認のコメント一覧
	$notify_message .= "未承認のコメント一覧:\r\n";
	$notify_message .= admin_url("edit-comments.php?comment_status=moderated") . "\r\n";

	return $notify_message;
}


//コメントの承認待ちメール
add_filter('comment_moderation_text', 'custom_comment_text', 10, 2 );
//コメントの通知メール
add_filter('comment_notification_text', 'custom_comment_text', 10, 2);


※参考にさせて頂きました。
WordPressカスタマイズ辞典

WordPressからの通知メールの送信者名とアドレスを変更する



WordPressからはコメントが送信された時、パスワードが変更された時、更新された時など様々なタイミングで通知メールが届きます。
その通知メールの差出人名は全て「WordPress <wordpress@ドメイン名>」のようになっています。

この差出人名を変更する方法です。

テーマファイルのfunction.phpに下記の通り追記します。
//差出人E-mailアドレスの変更
function change_mail_from($from_mail) {

	//変更したいメールアドレスを記述
	//return "xxxx@xxxx.com";
	//今回は管理者のメールアドレスに変更
	return get_option( 'admin_email' );

}
add_filter( 'wp_mail_from', 'change_mail_from' );

//差出人名の変更
function change_mail_from_name($from_name) {

	//変更したい差出人名を記述
	//return "mucha";
	//今回はサイト名に変更
	return get_option( 'blogname' );

}
add_filter( 'wp_mail_from_name', 'change_mail_from_name' ); 


これでwordpressからの通知メールの差出人名が全て変更されます。

※注意
メールフォーム作成プラグインの「contact form 7」で設定した差出人名も上書きされますので注意してください。
尚、同じくメールフォーム作成プラグインの「MW WP Form」では設定した差出人名は上書きされませんでした。

環境によって動作状況が異なるかもしれないので、動作確認してみてください。
 

コメント投稿時に記事作成者に飛ぶメールを管理者のメールアドレスにも送信する

WordPressで記事にコメントがつくと、送信される「コメントがありましたメール」

通常、記事の作成者宛てにメールが送信されますが、これを管理者にもメールを送信するように設定を変更しました。
READ MORE

作ったテーマをテストしたい。簡単にテーマを切り替えたい時のプラグイン。

新しく作成したテーマを適用する前に、サイトでテストしたい時とか、 テーマを切り替えることで、なんかおもしろいことを考えついた時にオススメのプラグインです。 Theme Test Drive 【使い方】
  1. プラグインをダウンロードしてくる。
  2. /wp-content/plugins/ディレクトリにアップロード。
  3. プラグイン設定画面で有効化。
だけです。 ページの切り替えをしたい時に「URLに?thema=テーマ名orテーマディレクトリ名」を追加するだけです。 例えば「http://www.muchacolla.com/?theme=default」 こんな感じです。 使い方によっては面白くなりそうですね。 「かゆいところに手が届く」系プラグインです。

ユーザーの情報を出力

ログインしているユーザーの名前を表示したり、ユーザーレベルによって分岐したい時。
<?php
global $current_user;
  get_currentuserinfo();

  echo $current_user->user_login;//ユーザー名
  echo $current_user->user_email;//E-mail
  echo $current_user->user_level;//権限レベル(数字)
  echo $current_user->user_firstname;//名
  echo $current_user->user_lastname;//姓
  echo $current_user->display_name;//ニックネーム
  echo $current_user->ID;//ユーザーID(数字)
?>
ユーザーのログイン状態で分岐する時。
<?php if($user_ID): ?>
ログインしている状態で表示したい事。
<?php else: ?>
ログインしてない状態で表示したい事。
<?php endif; ?>

カテゴリの説明で画像を入れたりHTMLが使えるようにする。

テンプレートタグの
<?php echo category_description(); ?>

をカテゴリページのテーマファイルに書き込むとその部分にカテゴリーで設定した説明が表示されます。
デフォルトではリンクタグくらいしかHTMLが使えませんが、imgタグで画像を挿入したり、
htmlをがっつり使いたい時もあります。

カテゴリを登録する時に、自動整形されてしまうので、そのフィルターを消してしまいましょう。

function.php
//カテゴリー説明文でHTMLタグを使えるようにする
remove_filter( 'pre_term_description', 'wp_filter_kses' );
//pタグが勝手に付与されるのでpタグを取り除く
remove_filter( 'term_description', 'wp_kses_data' );
これで、がっつりHTMLが使えます。

ログインページのデザインをカスタマイズする

ログインページもデザインをサイトと統一したい。とかオリジナルのデザインにしたいって時に使えるのが、「BM Custom Login」というプラグインです。 これもサイト制作をする上で、必ず使ってオリジナルのログインページを作っています。 使い方。
  1. プラグインをダウンロードしてくる。
  2. imagesフォルダ内に「login-bkg-tile.jpg」という名前でログイン画面のオリジナル背景画像を作成して入れる。
  3. /wp-content/plugins/ディレクトリにアップロード。
  4. プラグイン設定画面で有効化。
ログイン画面の画像を作る際に、「image-templates」フォルダ内に「login-bkg-tile.psd」というテンプレートファイルがあるので、これを使ってPhotoshopで加工すると簡単です。 文字の色とかはbm-custom-login-2.cssで設定できます。 ここで設定したログインページのデザインは、「WordPressPassword」を使った時のパスワード入力時にも表示されます。 オリジナルサイトを作る上で、このちょっとしたところでも違いを出せるのが嬉しいですね。