脳内プラグイン

プログラム関連のメモ書きというか落書きというか

Smart Custom Fieldsのラジオボタンのキーを取得する場合に数字を設定していたらとれなかった

ちゃんと設定できる人ならハマらない話しをひとつメモ。

Wordpressプラグインで「Smart Custom Fields」をよく使わせてもらっています。

こちらのプラグインラジオボタンの項目を作った際に選択肢を

キー => 値

の形で設定する際に以下のように数字をキーにすると

0 => 値1
1 => 値2
2 => 値3
3 => 値4
4 => 値5

SCF::get()をする際にはキーを取ってくるのではなく値をとってきてしまいました。

で、いろいろやった結果、
キーを設定する際はキーを文字列で設定する必要があるようです。

num1 => 値1
num2 => 値2
num3 => 値3
num4 => 値4
num5 => 値5

上記であれば値1を設定している場合にSCF::get()で num1 などのキー名を取得できました。

wp_postmetaの重複データ削除

Wordpressでインポートしまくるとwp_postmetaテーブルなどに重複データがわんさか。
特定のmeta_keyなどをチェックしながら削除したいなと思いググる

で、重複データの削除をとググると以下のような記事が上がってきたので拝見。

detail.chiebukuro.yahoo.co.jp

こちらを元に重複データのmeta_idが一番若いものを残して削除したかったので、

delete from wp_postmeta
 where meta_key = '任意のkey' and not in (
   select min_id from (
    select min(meta_id) as min_id from wp_postmeta where meta_key = '任意のkey' group by post_id, meta_value
   ) as tmp
  )
);

SQLを書いて処理した。

もっと簡単なやり方があるのかもしれないが、少しSQLの勉強になった。

久しぶりに書く

ブログを書いて続いたためしがなかったが再度思ったことを書いて行こうと思う。

過去の発言にはよっぽどのことがなければフォローはしていかない方針でいかないと死にそう。

とりあえず、最近、webのあちこち(サイボウズMacメモアプリやチャットワークやSkypeやテキストファイルやなんやかんや)にメモを適当にとっているので、あれはどこにいった、これはどこにいったということが多い。

で、結局のところ、現実世界に使っていないノート(打ち合わせでは時々顔をだす、以下:現実ノート)があって、空白ページが多くあったので、さながらアニメキャラの勉強キャラのように現実ノートにとりあえずのあったことやったことを記載していけば記録のトリッパグレはなくなるのかなと思いがんがん書いていっている。

よくwebの仕事してるんだからwebにかけばいいのにと言われたこともあり、webに記載していたのだが、以下の理由からそればっかりはやめようと思う。

  1. どうも肝心なところで、抜けていることが多い
  2. ネットに接続できないときにつらい
  3. つながっていても検索しないといけないことが多い

まぁ全部自分次第でどうにかなることなんだけれども。

現実ノートで書いていっているよということをブログでも書いてダブルスタンダードにしていければいいのかな。

とりあえず、ブログはネットでも記事の書く練習としてやっていく。
そういう方針で。

超絶便利なプラグイン「Search Regex Plugin」をカスタムポストタイプに適応する方法

Wordpressを公開前にテストディレクトリでつくって
そんでもってひと通り記事を投稿したあとで公開となったとき
画像のパスが変わっちゃって、あらららら〜ってなることありますよね?

そんな時に超絶便利な画像パスを一括で置換してくれる
Search Regex Plugin というものがあります。

使い方はこちらの記事を参考にさせていただきました。
http://nori510.com/archives/10803

で、デフォルトでは、カスタムポストタイプの項目が
ないので(当たり前か....)なんとなくノリで変更してみたら
なんとなくできたっぽいのでまぁそれをメモ。

とりあえず、plugins/search-regex/searches までいくと
コンテンツのファイルが並んでいるので、post_content.phpを複製して、
任意の名前をつける(ここではcustom_content.phpとしておく)

そんでもって、下記の箇所を変更していく

#3行目クラス名変更
変更前

class SearchPostContent extends Search

変更後

class SearchCustomContent extends Search

#10行目セレクト文変更 -> custom_postの部分はカスタム投稿タイプのid
変更前

$posts   = $wpdb->get_results ( "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('post','page') ORDER BY ID $orderby" );

変更後

$posts   = $wpdb->get_results ( "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('custom_post') ORDER BY ID $orderby" );

#36行目 オプションの部分のクラス名を変更
変更前

$options[] = '<a href="#" onclick="regex_replace (\'SearchPostContent\','.$result->id.','.$result->offset.','.$result->length.',\''.str_replace ("'", "\'", $result->replace_string).'\'); return false">replace</a>';

変更後

$options[] = '<a href="#" onclick="regex_replace (\'SearchCustomContent\','.$result->id.','.$result->offset.','.$result->length.',\''.str_replace ("'", "\'", $result->replace_string).'\'); return false">replace</a>';

これで、カスタムポストタイプのポストコンテンツを選択できるようになるはずです。
上記の内容はあくまで個人的に試した結果のメモなので、上記の作業は自己責任でお願いします。

お名前.comからカラーミーショップ・さくらのメールボックスへのDNSレコード設定

お名前.comで契約中のドメインをウェブサーバはカラーミーショップ、メールサーバはさくらのメールサーバに設定する方法を調べる。

1、まず、カラーミーショップを登録、該当のドメインを独自ドメインにて設定。

2、さくらメールボックスを登録、サーバの管理画面から独自ドメイン設定(他社で取得した独自ドメインを使う)をする。

3、DNSレコードを割り当てていく。

■Aレコードはカラーミーショップで独自ドメインを設定したときのDNSサーバIPを設定(←これちょっとあってないかも)
ホスト名空 | カラーミーのDNSの一個目のIP | 有効

■MXレコードは下記のように設定
ホスト名空 | さくらのアカウント.sakura.ne.jp | 10 | 有効

で、DNS設定をする前に設定したからか
01.dnsv.jp
02.dnsv.jp
03.dnsv.jp
04.dnsv.jp
の4種類のお名前DNSサーバがnsとして設定されている。
(これがだめなんやろか?)

とりあえず、これで、設定して現状メールは受信・送信ともにちゃんと動作したが、カラーミーショップはまだ表示されていない。

2〜3日かかるとメールに書いてあるが....なにか間違えている気がして仕方ないです。

もうちょっと様子をみてみよう。

Wordpressで全角スペースを実現するプラグイン

Wordpressの初期設定では記事の中に全角スペースを入れても消えてしまいます。

そこで下記のプラグインを使わせてもらいました。

PS Disable Auto Formatting

このプラグインは、Wordpressの自動整形を無効化するプラグインです。

こちらをインストールするだけで、記事の全角スペースが反映されるようになりました。

※自動整形を無効化しますのですでに投稿済みの記事を編集するとレイアウトが崩れる場合があります。

より直感的にお客さんに触ってもらうような管理画面ならば、導入しておくとラクかもしれませんね。

全角スペースを出したい方には是非。

SQLのORDER BYについて

ORDER BYで特定文字列が含まれている場合に後ろにするやり方をメモ。

「CASE」という関数を使うらしい。というか基本的なことっぽい...?

SELECT * FROM テーブル名 WHERE '特定の条件' ORDER BY (CASE WHEN フィールド名 LIKE '特定の文字列' THEN 0 ELSE 1 END);

のように書けば特定の文字を先頭にもっていくことができる。

SELECT * FROM テーブル名 WHERE '特定の条件' ORDER BY (CASE WHEN フィールド名 LIKE '特定の文字列' THEN 1 ELSE 0 END);

逆にこうすれば後ろに持っていくことができる。

これはよく使うSQLだ!と思ったが、そもそもこんなソートをしなくてもいいように設計するべきですよね...。

精進が必要です。