WordPressの超便利プラグイン MW WP Formの管理者宛メールにREMOTE_ADDRとUSER_AGENTを追加する方法。

意外とGoogle先生の回答に出てこないのでココでメモ。

フィルターフックの mwform_custom_mail_tag を使います。

functions.php に以下のコードを貼り付けます。

んで、管理者宛メール設定の本文欄末尾に以下のテキストを貼り付け。

That’s all.

Googleで「MW WP Form user_agent remote_host」的な検索をすると、だいたい mwform_custom_mail_tag_mw-wp-form-xxx が検索結果として出て来るんだけど、これだとテストサーバと公開サーバでお問い合わせフォームIDが違ってたりしてキーーーってなるので、前述のほうが便利だと思うよ、知らんけど。

Advanced Custom Fields の「関連」「投稿オブジェクト」はとても便利だけど、非公開の記事まで公開されちゃから要注意だよ、という話。

Advanced Custom Fields プラグイン。
めっちゃ便利です。
WordPress案件だと必須だというくらい重宝させていただいています。

で、その機能の中に「関連」「投稿オブジェクト」というフィールドタイプがあります(両方共似たようなもん)。
ブログ記事に関連する記事を手動でピックアップして関連付けるという機能です。
・シリーズ物の記事の過去記事を関連付けたり。
・ブログ記事に、店舗用カスタム投稿を関連付けて、新たな導線を作ったり。
・トップページ用のスライダーをオプションページで作成したり。

で、つい最近、それについて納品先から指摘がありました。
「非公開記事が出ちゃってるんだけど……。」

(;・∀・)

出ますね。
非公開記事も予約投稿も選択できちゃうし、公開してないのに出ちゃいますね。

というわけで、こちらの対応はテンプレートファイルからの呼び出し側にてコントロールします。
なぜ、プラグインの方を改修しないの?という疑問については、予約投稿をしたものも「関連」で選択したいし、という理由です。

ついでに、非公開記事については、管理者ログイン中には【非公開: 記事タイトル】という感じで出すようにします。
(通常のループの中と似たようにします)

以下のスクリプトは、オプションページでトップページ用のおすすめ記事を出す!という例になります。

とっても便利なプラグインはとっても便利だけど、自分が作っていないだけに全仕様を把握して使うわけではありません。
ちゃんと動く理屈を把握して使いましょうね、という話でした。

OSX(El Capitan)で、MAMPのPHPをコマンドラインで実行するのが面倒なので、シンボリックリンクで便利に繋げてみた。

絶賛MAMP PROユーザーです。(たった59USDで劇的に便利になるのに意外と周りの人が使ってない……)

で、最近のPHPでの開発となると、コマンドラインでPHPを叩いてテンプレートを作成する!みたいな便利機能が多いです。
で、絶賛MAMP PROユーザーなので(しつこいw)、OSXのコマンドラインから叩くPHPと、実際にブラウザ経由で走るPHPのバージョンが違ったり、DBに接続する方法が違ったりと面倒なことに直面します。

今までは、

みたいに長々とMAMPのPHPのフルパスを打ってた(なぜ!?)んだけど、いい加減ちゃんとやれよ!と怒られそう(誰に?)なので簡便化してみました、というご報告。

まず、Googleさんに聞いてみたら、それらしい記事をご紹介いただいたので、そのままやってみたら、Operation not permittedって怒られる。
なんで?とよくよく見てみたら、その記事の冒頭にちゃんと「怒られた方はこちら」ってちゃんと書いてた。

ようするにEl Capitanの場合、Rootlessというセキュリティ機能が追加されて、/usr/binへの変更ができないんだそうです。

先の記事だと「その機能を無効にしちゃおうぜ!」って方法なんだけど、さすがにそれはヤダ。

というわけで、自分のユーザーディレクトリに各MAMP PHPのバージョンのシンボリックを配置しちゃおうぜ!ってのが本題です。
(前振りが長くて申し訳ありませんでした)

続きを読む OSX(El Capitan)で、MAMPのPHPをコマンドラインで実行するのが面倒なので、シンボリックリンクで便利に繋げてみた。

WordPressの固定ページで、WP_Queryで記事を取得するもページネーション(the_posts_pagination)がうまく動作しない場合の解決方法。

ちょいと調べてみたけど、結構その対応手段がネットに公開されていなかったので、ソース調べてみた。

get_the_posts_pagination() 内で、$GLOBALS['wp_query']->max_num_pages が1以上じゃないと処理をしないのに、固定ページ内で WP_Query を回しても $GLOBALS['wp_query']->max_num_pages には値が入っていないのが原因。

なので、自分でぶっ込んでやれば良いみたい。

こんな感じ。(2016年1月28日現在。WordPressのバージョンは4.4.1)