今日が誕生日

おめでとう。友人に先程子供が生まれましたー!出産に20時間かかったとのことで、本当によく頑張ったなぁと写真を見てウルッと、、

今はもう年に数回会うくらいなのですが、お母さんになった友人をこれからもずっと見守っていきたいのです。そう思える人は私にはごく少数なのですが、、ほんとにおめでとう!!と思いながら次の瞬間人を殺すゲーム、人狼の動画を観ようとしてハッとしました笑

 

対面人狼では人に好かれる能力も多少必要だったりする気がしてます。そういう要素を取るのはあまり好きではないのですが、人狼最大トーナメントでいうとまっくすさんです。

まっくすさんはノット強弁・発言量なのですが比較的村側に置かれる事が多いです。勿論話す内容も白いのですが、元々持った人に好かれやすい能力(話し方、声のトーン、しぐさ)も発揮されているのではないでしょうか。

結局人狼のお話でした。

 

人狼練習会

先日さかなさんとはなうささんが開催されている人狼練習会に参加させて頂きました。

本格的な対面人狼は初めてでしたが、皆さんとても強くて人狼に情熱を注ぎ込んでいる人達で、夢のような時間を過ごすことが出来ました。

初めてにしてはというビギナーズラック的な要素でお褒めの言葉も頂きましたが、自分的には反省点が多かったです。自分の考えている事をいかに他者に理解してもらえるように説明できるかが、盤面的に白くなるよりも大事なことだと今の時点では思います。あとは人狼陣営になった時に誰を味方につけるかを厳選する力かもしれません。

 

反省会で知ったのですがさかなさんが狂人で最後に私(村)に黒を打つ予定だったとのことで、もし偽物に黒を打たれた際にどのように白アピするかを村を引いた時点で練って置くのも大切だなと。さかなさんは狼に噛まれてしまったからよかったものの黒を打たれていたら反論を用意していない分やばかったですね。。

ステマチックな安定進行をずっとやっていたので、私は傍観が多くパッションが足りないようです。そこが対面で訓練されてきた人達にとっては黒要素になり得る。やっぱり人狼は奥深い…またあの空間を味わいたく既に次の練習会も参加予定です。

最後にちらっとイケメン大浜さんと対面を見るきっかけになった大好きなスナパイさんに会えたのでもう本当夢のようでした!

神がかっていたクイズ王古川さんの狂人

先日の人狼最大トーナメントを見終わりました!(season4 #12)

3戦目初日、古川洋平さんの狂人ムーブがあまりにも完璧すぎて興奮しました。

22盤面
占い候補 高田さん、ナオさん
闇霊候補 まっくすさん、古川さん(狂)

狂人の古川さんとしては初日対抗のまっくすさん吊りが一番狼に貢献できる状況です。
闇霊から吊る流れになっていた時に古川さんが一気に真目を勝ち取りに行った発言を抜粋します。

「僕は霊媒からロラしていいと言っていて、それを嫌がっていたのが谷さん、それに乗ったのが(霊媒ロラに賛成したのが)ナオさん。それを結局嫌がってまっくすを助ける票をいれたのが高田さんです。(つまり)まっくす人狼、高田狂人、ナオさん真。まっくすと高田に票を入れられている事からこくじんさんは人間でみています。(省略)僕はまっくんを殺したいと思っていて、こくじんさんを殺したくないと思っています。」

これは質疑応答で大貫さんと話しているときの発言でした。
古川さんは真霊になりきって、そこから見える景色を一切淀みなく説明しました。
これで古川さんからすると誰が敵に見えて、誰が味方に見えるのかがとてもクリアに村に伝わりました。



続いて、決選投票での発言です。これで真霊媒師を吊ることが決まりました。
決戦はまっくすさん・こくじんさん・古川さんの三名が吊り候補となっていました。

「自分の主張というよりは村の盤面整理をするのですが、こくじんさんは限りなく村に近いと思います。まず、(前提として)僕とこくじんさんは僕に入れているのでかばっていないという事をわかってください。そのうえで、(村目線)人狼の可能性があるまっくす・高田から投票を受け、人狼の可能性である古川に(こくじんさんは)投票しています。ナオさんとこくじんさんの両狼でない限りこくじんさんは人間です。ここまで集まったのはおかしいし、そこに入れたのがまっくすだということを覚えておいてください。僕は他の人間の要素も拾っているし、まっくすが怪しい位置に谷さんを入れていたのが両狼で自分が吊られて偽がバレた時に切っていたのだと思っています。一番(怪しいのは)はグレーの中では谷さん、二番目にピカクロスさんで、三番目にぬきさんと敢えてヘイトを買うことを言います。この三人から票が(自分に)集まってもいいので他の人をめちゃくちゃ信じています。こくじんさんも絶対人間であると確信が持てます。」

スラスラとこの推理を披露できることもバケモノですが、まずこくじんさんが人間である理論があまりにも説得力があるので古川さん自身の信頼性も上がっちゃいますよね。そこからの展開が見もので、村から見て限りなく人間の可能性が高いこくじんさんに入れたのが、古川さんの対抗であるまっくすさん。
この詰め方!すごすぎませんか・・・

そして、最後に敢えてグレーの中から三人を怪しいと名指しで告げ敵に回すことと引き換えに残りの人たちを味方につけました。
結果、真霊であるまっくすさんは吊られることに。

感情的にならず、聞き取りやすく誰が聞いても分かるように説明されて真を取りに行った古川さん。
やっぱり強いですね・・・物凄くかっこよかったです。

【DW Question & Answer】禁止ワードを含む投稿の送信を拒否する

シンプルなので使いやすいDW Question & Answerですがスパム問題はつきものです。
BBpressはWordPressのディスカッション設定で禁止ワードを設定すれば連動していて楽なのですがDW Question & Answerは禁止ワード対策は自分でするしか無いのです。

いろいろと試行錯誤したのですが、シンプルにjavaScriptで禁止ワードが含まれていたらアラートで拒否する方法を。
下手にプラグインを入れて重くなるよりは良いと思います。
あとついでテキストエリアをシンプルに変えてます。


dw-question-answer\templates\question-submit-form.php
の11行目formの上辺りに以下を加えてみて下さい。
※ここでのtest(monmon)という関数はお好きなものに変えて下さい。

<script type="text/javascript">
var badWords = ["アホ","バカ"];
var regex = new RegExp(badWords.join("|"));
function test(monmon) {
if (monmon.match(regex) != null) {
alert("禁止文字が含まれています");
return false;
}
return true;
}
</script>


次にformにaction="javascript:alert('sumbit!')" onsubmit="return test(this.monmon.value)"を加えます

<form method="post" class="dwqa-content-edit-form" enctype="multipart/form-data">

<form method="post" action="javascript:alert('sumbit!')" onsubmit="return test(this.monmon.value)" class="dwqa-content-edit-form" >

次に禁止ワード対象となるフィールド(タイトルや本文)にid=monmonを加えます。ここでは本文を対象とします。
DW Question & Answerのテキストエリアをシンプルなテキストエリアに代えてます。

<p><?php dwqa_init_tinymce_editor( array( 'content' => $content, 'textarea_name' => 'question-content', 'id' => 'question-content monmon') ) ?></p>

を以下にまるっと変えてidに"monmon"をつけています。↓

<textarea rows="5" cols="100%" name="question-content" id="monmon" placeholder="最大800文字まで記入できます。" minlength='20' maxlength='800' required></textarea>

※pleceholderや文字数などはご自身で好きに変えて下さい。。

最後にsubmitに"submit" formaction="#"をつけます。以下に変えて下さい。
submitのコードは最後の方にあります

<input type="submit" formaction="#" name="dwqa-question-submit" value="<?php _e( 'Submit', 'dwqa' ) ?>" class="cp_btn">

とりあえずこれでテストすると下記のようにエラーが出ることを確認して下さい。
f:id:meijiro:20180930184355j:plain


以上です。
jsファイルを外部に設置したり禁止ワードを増やしたりカスタマイズ出来るかと思います。このままでも良いですが外部に設置することで別のページでもidにmonmonをつければ同じ動作ができるので便利だと思います。
あと、javaScriptの関数に-(ハイフン)が使えないので、くれぐれもDW Question & Answerのnameを使用せずに(なぜかnameには全て-を使っている!)新たにid="monmon"など別のものを設置して下さい。

【WP bbPress】で通報機能にReportContactを使った際に起こる表示崩れを直す

コメントを開放している場合や投稿系サイトを制作する上でスパムの餌食となりやすいWordpressですのでサイトを健全に保つためにも通報機能は必須ですね。
それが簡単にできちゃうReportContactがおすすめです。

本題はこの便利なReportContactですが、bbPressだと表示崩れが起きちゃうんです。
原因は単純でCSS上でBBPとReportContactのliタグが拮抗しちゃってるだけなんですけど...それがわからなくて利用を諦める人がいると勿体無いと思いますので修正する箇所を落としておきます。

bbPress+ReportContact

プラグイン:ReportContact
詳細はこちらの方が分かりやすく説明されていました(ありがたいことに日本語翻訳版も用意してくれている)
WordPressでYahoo知恵袋などにある「違反通報」と同じ機能を追加できるプラグイン「Report Content」 | Knowledge Base

設定では【投稿、オート】でとりあえずbbPressのページを確認すると表示されていないことがわかります。
なので独自タグを通報を設置したい箇所に加えます。

通報ボタンのタグ

<?php wprc_report_submission_form(); ?>

これを本文の後に付け加える場合
wp-content\plugins\bbpress\templates\default\bbpress\loop-single-reply.php
の最後の方

		<?php do_action( 'bbp_theme_after_reply_content' ); ?>

	</div><!-- .bbp-reply-content -->

		<?php do_action( 'bbp_theme_after_reply_content' ); ?>
		<?php wprc_report_submission_form(); ?><!--ここに通報ボタンを加えました-->
	</div><!-- .bbp-reply-content -->

このままでは表示が崩れていますので
wp-content\plugins\bbpress\templates\default\bbpress\loop-replies.php
40行目辺りのliタグをdivに変更すれば表示崩れが直ります。

	<li class="bbp-body">

		<?php if ( bbp_thread_replies() ) : ?>

			<?php bbp_list_replies(); ?>

		<?php else : ?>

			<?php while ( bbp_replies() ) : bbp_the_reply(); ?>

				<?php bbp_get_template_part( 'loop', 'single-reply' ); ?>

			<?php endwhile; ?>

		<?php endif; ?>

	</li><!-- .bbp-body -->

↓↓

	<div class="bbp-body">

		<?php if ( bbp_thread_replies() ) : ?>

			<?php bbp_list_replies(); ?>

		<?php else : ?>

			<?php while ( bbp_replies() ) : bbp_the_reply(); ?>

				<?php bbp_get_template_part( 'loop', 'single-reply' ); ?>

			<?php endwhile; ?>

		<?php endif; ?>

	</div><!-- .bbp-body -->

f:id:meijiro:20180915031125j:plain

((o・д・)bGood Luck

【WP bbPress】トピックごとの返信に番号1~を付ける

【bbpress】How to add new reply number(1~) by topic.

bbPressの返信単体には一応reply_idがついているのです。しかし、全トピックで通し番号になっているので数字の桁も大きく、尚且つトピック上で連番になっておらず不自然です。

なのでトピックごとに1~の連番を付加する方法を紹介します。
これがトピックごとの返信の番号(レス番号)にあたるコードとなります。
This code is new reply number(1~) by topic.

		<?php echo bbp_reply_position( $reply_id ); ?>


wp-content\plugins\bbpress\templates\default\bbpress\loop-single-reply.php
16行目あたり

		<span class="bbp-reply-post-date"><?php bbp_reply_post_date(); ?></span>

を以下に変更追記してみて下さい。 Change to the next code.

		<span class="bbp-reply-post-date"><?php echo bbp_reply_position( $reply_id ); ?><?php bbp_reply_post_date(); ?></span>

↓↓すると日付の前に番号がつくことが確認できたと思います。別のトピックも1~の番号がついていると思います。
f:id:meijiro:20180913105200j:plain


同じファイルの27行目あたりここが↓本来のPOST_IDになりますので This code is bbPress original reply_id.

		<a href="<?php bbp_reply_url(); ?>" class="bbp-reply-permalink">#<?php bbp_reply_id(); ?></a>

↓↓

		<a href="<?php bbp_reply_url(); ?>" class="bbp-reply-permalink">#<?php echo bbp_reply_position( $reply_id ); ?></a>

このようにaタグに入れると尚自然かもしれませんね!

f:id:meijiro:20180913103941j:plain

↓↓

f:id:meijiro:20180913110714j:plain

【DW Question & Answer】Emailと名前を必須から匿名にする方法

引き続きDW Question & Answerについて、デフォルトではEmailと名前は必須になっていますので、それを匿名にする方法をメモっておきます。
?How to use DW Question & Answer anonymous without entering email address.

wp-content\plugins\dw-question-answer-pro\templates\answer-submit-form.php
(pro)wp-content\plugins\dw-question-answer-pro\templates\styles\default\answer-submit-form.php
20行目あたり

		<p>
			<label for="user-email"><?php _e( 'Your Email', 'dwqa' ) ?></label>
			<?php $email = isset( $_POST['user-email'] ) ? $_POST['user-email'] : ''; ?>
			<input type="email" class="dwqa-question-anonymous-email" name="user-email" value="<?php echo $email ?>">
		</p>
		<p>
			<label for="user-name"><?php _e( 'Your Name', 'dwqa' ) ?></label>
			<?php $name = isset( $_POST['user-name'] ) ? $_POST['user-name'] : ''; ?>
			<input type="text" class="dwqa-question-anonymous-name" name="user-name" value="<?php echo $name ?>" >
		</p>

を以下に変更すればOK

		<p>
			<label for="user-email"><?php _e( 'Your Email', 'dwqa' ) ?></label>
			<?php $email = isset( $_POST['user-email'] ) ? $_POST['user-email'] : ''; ?>
			<input type="hidden" class="dwqa-question-anonymous-email" name="user-email" value="anonymous@yoursite.com">
		</p>
		<p>
			<label for="user-name"><?php _e( 'Your Name', 'dwqa' ) ?></label>
			<?php $name = isset( $_POST['user-name'] ) ? $_POST['user-name'] : ''; ?>
			<input type="text"  name="user-name"  value="anonymous">
		</p>

すみません、これは力技です。。
Emailをhiddenで非表示にしてvalue="anonymous@yoursite.com"を入れていますので、ここを届かないメールアドレスに変えて下さい。
名前のテキストエリアは予めvalue="anonymous"を入れてありますのでanonymousの部分を匿名などに変えてください。

本来は名前とEmailを入力しないで送信した場合こちらで指定した値”anonymous”が送れることが一番良いと思うので、これについてはもう少しみてみます。。

【DW Question & Answer】回答にレス番を表示させる方法

ヤフー知恵袋のような仕組みが作れるDW Question & Answerプラグインですが、回答者ごとにレス番を表示させる方法をメモっておきます。
How to display ReplyID(answerID).

プラグイン内部を触りますのでバックアップは取っておいて下さい。。。
wp-content\plugins\dw-question-answer\templates\scontent-single-answer.php
(pro版)wp-content\plugins\dw-question-answer-pro\templates\styles\default\scontent-single-answer.php

23行目

<?php printf( __( '<span><a href="%1$s">%2$s%3$s</a> %4$s answered %5$s ago</span>', 'dwqa' ), dwqa_get_author_link( $user_id ), get_avatar( $user_id, 48 ), get_the_author(), dwqa_print_user_badge( $user_id ), human_time_diff( get_post_time( 'U', false ), current_time( 'timestamp' ) ) ) ?>
		<?php if ( 'private' == get_post_status() ) : ?>

上記コードが回答者の名前の箇所になります。
なので上記コードの前あたりに
↑This code is answers username.

<?php echo get_the_ID()?>

を挿入すればOKです。
↑and add this code.

【WP Job Manager】カテゴリー(職種)をシングルページで表示させる

求人サイトなんかを作るにはもってこいのWP Job Managerですが、カテゴリー(職種)を付加できるもののデフォルトのシングルページ(求人詳細ページになります)では肝心のカテゴリーが表示されないんです。
会社の情報としてもしっかりと表示されてほしいかと思いますので以下を追記することで表示されます。

<?php the_terms( $post->ID, 'job_listing_category', '', ' / ' ); ?>

シングルページ(求人詳細ページ)はtemplateファイルの「single-job」がついたファイルになります。

例を挙げあると
plugins\wp-job-manager\templates\content-single-job_listing.phpをダウンロードしてテキストエディタで開いて下さい。

		<div class="job_description">
			<?php wpjm_the_job_description(); ?>
		</div>

の上あたりに上記コードを入れてアップロードしてみて下さい。
ブラウザでカテゴリーが表示されることが確認できると思いますので、divで囲うなりcssで表示を変えればOK

【WordPress】EventManagerで予約項目を増やす方法

EventManagerというプラグインで予約するときの項目を増やす方法です。

wp-content/plugins/events-manager/em-functions.php
テキストエディタで開いて下さい。

ここでは住所を追加したいと思います。
以下のコードを追記して下さい。

function bweb_add_custom_event_fields(){
	?>
		<p>
			<label for='user_company'><?php esc_html_e('住所', 'textdomain'); ?></label>
			<input type="text" name="user_company" id="user-company"  class="input" value="<?php if(!empty($_REQUEST['user_company'])) echo esc_attr($_REQUEST['user_company']); ?>" />
		</p>

	<?php
}
add_action('em_register_form','bweb_add_custom_event_fields');


function  bweb_save_custom_event_fields (){
	global $EM_Booking ;
	if( ! empty( $_REQUEST['user_company'] ) ){
			$EM_Booking->booking_meta['registration']['user_company'] = wp_kses( $_REQUEST['user_company'], array() );
	}
}
add_filter('em_booking_add','bweb_save_custom_event_fields');	


function bweb_table_custom_event_fields($template, $EM_Bookings_Table){
        $template['user_company'] = __('住所', 'textdomain');
        return $template;
}
add_action('em_bookings_table_cols_template', 'bweb_table_custom_event_fields',10,2);
 
 
function bweb_display_col_custom_event_fields($val, $col, $EM_Booking, $EM_Bookings_Table, $csv){
        if( $col == 'user_company' ){
                $val = $EM_Booking->get_person()->user_company;               
        }
        return $val;
}
add_filter('em_bookings_table_rows_col','bweb_display_col_custom_event_fields', 10, 5);

上記コードにある二箇所の「住所」を好きな項目に変更してください。
閉じてアップロードすれば項目が追加されたはずです。

データベースにも追加されますので、管理画面の予約管理→歯車を押せば項目をドロップすればCMSに落とす際にも追加されます。



※追記です
自動返信メールで上記で追加した項目のプレースホルダーが必要かと思います。その場合は、
wp-content/plugins/events-manager/classes/em-booking.php
1029行目あたりからメールで使えるプレースホルダーの設定がありますので

				case '#_RESCOMPANY' : //deprecated
				case '#_BOOKINGCOMPANY':
					$replace = $this->get_person()->user_company;
					break;

を追加してアップロードして下さい。
これでメール設定で#_BOOKINGCOMPANYが使えるようになります。