ハナモゲラボ / 試行錯誤の実験人生

日々、PCや各種デバイス、楽器等に翻弄されながら電脳の森をさまよう男の日常と様々な実験をさらりと記しております。

新顔 ― ネオンテトラさんが団体でやってまいりました

November 09 2018

白点病ウォーをただ一匹勝ち抜いて生き残った黒デメさん。
ヒレはズタボロで満身創痍、しかし白い点も抜けてなにやら貫禄が出てきた様子です。
「昔、ひどい戦争があってのう・・・」とCV:永井一郎(故人)で語り出しそうです。
なんだか水槽の中のフィルターが「ラプラスの箱」に見えて・・・もういいかこのネタは。

というわけで、我が家の水槽は底にコリドラス(今回の白点病騒ぎとは無縁の様子)が3匹。
そして、中層部分はこの黒デメが優雅に1匹泳いでおる状態。
10匹居たときはフンの量がそれこそ半端なかったのでそれが1/10にまで減れば水質改善も進むはず。

しかしやっぱりね。寂しいわけですよ。

今回の白点病騒ぎでヒーターも購入した事だし、ここはもう熱帯魚をお迎えするのがよかろうと思いましてね。
高校生以来のこやつを購入しました。

ネオンテトラ。1匹42円(税込)という破格セールだったので10匹をお持ち帰り。
本当は首の部分まで赤いカージナル・テトラが欲しかったんですが何やら病気治療中って事で販売されておらず。
同時にあっという間に散ってしまったオトシンクルスの亜種、オトシンネグロも投入したかったのですが
ここでは販売されておりませんでした。

水槽に投入した時はなんやらビビってた様子で、10匹単位で水草の影で隠れていましたが
数時間経つとあちこちを泳ぎ回るようになっていました。
黒デメ(CV:永井一郎)も「我、関せず」という感じでドーンと構えておりまして水槽内は平和です。
コリドラスは相変わらず底でオシリフリフリして餌をあさってます。

それにしても・・・・!

なんなんでしょうかこの水のクリアさ、そして水草の発色の良さは。
さすがはプロが手がける水槽だけありますね。
我が家の茶苔にまみれたウェザリング(汚し塗装)仕様のティーガーIみたいな水草群とは大違いですわ。

お店の展示物によると「ここまでするのならぜひ二酸化炭素添加を」という事だそうで。
うーん、そうかあ・・・・また追加投資か・・・・

しかしDIY的な方法としてドライイーストに砂糖をまぜてCO2を発生させて、ペットボトルとホースを使って水槽内に送り込むという手法もあるとか。

自分はパンを焼くのでドライイーストも砂糖も常に家にある・・・!

【100均DIY】発酵式CO2添加システムの作り方【工具なし】

今度のお休みの時にでもやってみますかな!

Themifyのテーマを使っている場合に内部リンクの書換をする際に注意する事

November 08 2018

WordPressのテーマをカスタマイズする事が多い昨今。
よく使うのが海外の有料テーマ「Themify」のテーマ群です。
ここのテーマには「Themify Builder」という独自のビルダーが内蔵されており更新管理もとても楽なのです。
ただし、ソースは入れ子ラッシュになりますけども(笑)

で、本番環境で旧サイトが稼働している段階でWordpressを格納するディレクトリを作って作業している場合。
本公開の際に旧サイトを削除して、Wordpressの設定画面でディレクトリを削って公開という流れはよくあるんですけども、こういう場合一番困るのは「内部リンクを書き換えなければ404エラーになってしまう」という事です。
フルパスでリンクが生成されるWordpressの宿命ではあるんですけども、かといって制作の段階でディレクトリ削ったリンクを生成していくのも面倒くさいじゃないですか。
リンクを辿って確認していく事も出来ませんしね。
かといって、.htaccessで転送かけるのもなんかイヤだ、という性格の人の場合はこの書き換え作業でちょいと困ります。

普通のWordpressのテーマであればこの場合は以前にも紹介した「Search Replace DB」で書き換えてやれば一発。

WordPressをSSL化 ― Search Regexに潜む罠とは

あちこちではよくWordpressの一斉置換の場合Wordpressプラグインの「Search Regex」が紹介されてますけども、あのスクリプトは「投稿」「固定ページ」内だけしか置換出来ないので、例えばウィジェットなんかにバナーを置いて内部リンク貼ってる場合やカスタム投稿タイプを使っているとスクリプト本体を書き換えなきゃなりません。
なので、最近は「Search Replace DB」を使っています。

内部リンクを書き換える場合、まずはこいつでaタグのhrefを書き換えます。
当ブログだとこういう感じ:
href=”blog.g-fellows.com/wp/ → href=”blog.g-fellows.com/

ここで「https://blog.g-fellows.com/wp/」を「https://blog.g-fellows.com/」と置き換えちゃうと色々マズいです。
画像のフルパスも全て書き換わってしまうのでサイトは完全に崩壊します(笑)

・・・と、普通はこれでウィジェットも含めたURLも書き換わるはずなんですが
Themifyのテーマの場合、これだけではサイト内のフルパスは書き換わってくれません。

なんでや?と思ってデータベースを直接開いて見比べたりしていると、どうやら独自ビルダー「Themify Builder」を使った部分だけが書き換わってない様子。

投稿データは通常データベーステーブルの「wp_posts」内に全て収められてるんですけども
Themify Builderで作った部分はwp_postmetaに「独自の形式」で収められるんですな。

Themify Builder内でテキストリンクを使用した場合

この場合、テーブル内には

a href=\\\”https://blog.g-fellows.com/wp\/

という形で収められています。
そりゃさっきのヤツでは書き換わらんわけだよ・・・・

なので

a href=\\\”https://blog.g-fellows.com/wp\/ → a href=\\\”https://blog.g-fellows.com/
とSearch Replace DBで書き換えてやればテキストリンクは無事に書き換わります。

Themify Builder内で画像に内部リンクを使用した場合

次はBuider内の「Image」を使ってバナーなどに内部リンクを貼っていた場合はこういう形式で収められています。

“link_image”:”https://blog.g-fellows.com\/wp\/

そりゃさっきのヤツでは(以下r

今回の場合、テキストの場合と違ってドメイン名の末尾にエスケープシーケンスが入っているのに注意。

なので

“link_image”:”https://blog.g-fellows.com\/wp\/ → “link_image”:”https://blog.g-fellows.com\/
とSearch Replace DBで書き換えてやればOKです。

自分の場合、Builder内の機能ってあんまり使わないので今回これだけで済みましたが、他の設定項目でURLを含む何かを設定した場合にも何らかの形で置き換えないとマズい形になっているかも知れませんな。

もうその場合、てっとり早そうなのがアクセスが少ない時間帯に、Wordpressを丸ごとバックアップして再現するプラグイン「All-in-One WP Migration」を使ってWordpressごと移設しちまうのが早いかもしれません。

All-in-One WP Migration – WordPressのサーバー移設が簡単にできるプラグイン

このプラグイン、Wordpressサイト全体が512MB以下であれば無料で使用出来ますのでとても便利です。
インポートする際にリンク先の変更も自動でやってくれます。
少なくとも僕の場合は1度もミスった事はありませんが、決して万能ではないという事で自己責任で使用願います。

Contact Form 7でoptionsの値を引き渡す方法

November 07 2018

WordPressでのお問い合わせフォーム設置といえばやはりContact form7が定番です。
さまざまな派生アドオン的なプラグインも出回っており色々と便利。

今回、やりたかったのはフォームが設置してあるページに様々な所からリンクされる場合、
例えば1ページにずらりと各商品説明が並んでいて、それぞれに「問い合わせはこちら」というボタンを設置、みたいな。

その場合、フォームにはずらりと商品名が入ったセレクトボックスが並んでいるという状態ですが
「飛んで来たボタンの商品名のセレクトボックスの色を変えておきたい」というケースです。
単純に考えるとそのセレクトボックスにIDを割り当ててCSSで着色すれば良いのですが、これがなかなか手間取りましてね。

Contact form7の値を取得して引き渡す方法は様々なサイトで紹介されておりますが、valuesの値ばかり。
欲しいのはIDの取得なんだよ・・・・・

チェックボックス、ラジオボタン、メニュー

これを見る限り各項目にはid:(id) というオプション項目があるのでなんとか出来るはずと試行錯誤。
optionsの各項目を取得するのは以下のやり方で大丈夫でした。
functions.phpに以下を書いてあげます。

function my_form_tag_filter($tag){
  if ( ! is_array( $tag ) )
  return $tag;

 if(isset($_GET['select1'])){
$name = $tag['name']; 
if($name == 'hogehoge01')
$tag['options'] = (array) ("id:" . $_GET['select1']);
  }
 
  return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);

Contact form7側でまず「hogehoge01]というセレクトボックスを作ってます。
で、フォームにアクセスする際にURLの末尾に
?select1=true
って感じでつけてあげると、セレクトボックスにid=”true”が割り当てられます。

項目を複数にする場合は

function my_form_tag_filter($tag){
  if ( ! is_array( $tag ) )
  return $tag;

 if(isset($_GET['select1'])){
$name = $tag['name']; 
if($name == 'hogehoge01')
$tag['options'] = (array) ("id:" . $_GET['select1']);
  }

 if(isset($_GET['select2'])){
$name = $tag['name']; 
if($name == 'hogehoge02')
$tag['options'] = (array) ("id:" . $_GET['select2']);
  }
 
  return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);

という感じで増やしてあげる事で実現出来ました。

« Oct 2018 November 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30