「正規表現」タグアーカイブ

何も考えずサイトを移転したらアクセス数が10分の一以下になった話

 

これ、何の画像かわかります? 私のサイトのアクセス数です。見たとおり、かなりパナイ降下っぷりを示しています。恐ろしい。

今、このサイトがあるドメインは「ao-works.net」という名前で、一ヶ月前に取得した物です。新しく取得したばかりだから、検索サイトからも評価が低い状態なんですね。

前あった場所はかなり時間が立ち、良ドメインではあったのですが、巣立ちという意味合いも込めて心機一転。新しくやっていこうと思ったわけです。

サイト移転はリダイレクトをしっかりと

前のサイトからこちらのサイトへ移る際、前の方では検索エンジンにインデックスさせないように設定していました。

 

「ダッシュボード>設定>表示」にあるこのチェックボックスにチェックを入れるんですけれどね。これでサイトが完全に分裂した状態です。

さらには、依存記事を一旦非公開に。結果大量の404ページが量産されることに。今考えると何してるんでしょうね、私。

301リダイレクトを選択する事

サイトを移転する – ウェブマスター ツール ヘルプ

301 リダイレクトを使用して、以前のサイトにあるすべてのページを新しいサイトに完全にリダイレクトします。これにより、検索エンジンやユーザーに、サイトが完全に移転したことを知らせることができます。最初に 1 つのセクションまたはディレクトリを移転してリダイレクトし、リダイレクトが正しく動作することをテスト、確認してから、すべてのコンテンツを移転することをおすすめします。

googleさんもこういっておられますし。301リダイレクトにしましょう。そうしましょう。

wordpressは便利なプラグインがある

301リダイレクトを設定するには「.htaccess」ファイルを弄る必要があります。どのFTPソフトとかで直接ファイルを触るので、知識が無いとちょっと怖いですね。中身も意味不明な呪文みたいなのが書かれてますよ。私にはちんぷんかんぷんです。ええ。

というわけで素直にwordpressプラグインに頼ります。

WordPress › Redirection « WordPress Plugins

日本語対応でわかりやすく、正規表現が扱えます!ワオ!

 

設定はこんな感じです。詳しいプラグインの解説なのでは他のサイトが詳しくやってくれるので割合しまして。

前のサイトと、今のサイトではちょっとパーマリンクの設定が違います。前のサイトでは語尾に「.html」がついていたのですが、今のサイトではついていないのです。

「(.*).html」という表記は、.htmlまでを全て認識しつつ、「.html」の前の部分だけを記憶する、という正規表現の表記です。

対してリダイレクト先の設定の「http://ao-works.net/$1」にある「$1」は、記憶した文字列をここに追加する、という意味です。

設定したら、実際にリダイレクトできるかどうか試してみましょう。

http://cre.jp/honyomusi/see-uss-picture-summary-just-to.html

アドレスに注意してアクセスしてみてくださいね。

あとは結果を黙して待つ。

手遅れな気もするのですが、とりあえず結果をまってみようと思います(汗

数ヶ月後くらいにどうなったのかの経過報告をさせていただきますね・・・。

wordpressでの投稿前にTRPGリプレイ文体をPHP処理で整形する

TRPGネクロカ「箱庭茶会 コンベンション」灰色卓リプレイpart0 – キャラ作成から始動 | aoringo works

リプレイのスタイルを少し変更し、名前を太字にしてみました。あとは改行されてもスペースを置かないように変更。一般的なリプレイ本と同じ文体ですね。

投稿する時にphp処理を挟む

文章を太字にするには「<b>」タグを利用します。つまり、リプレイの名前に全てこれを埋め込む必要があるのですね。執筆してる段階でそれらを入れていくのは疲れるものです。

グリーンマン:「”私”は構わないのだが。本当に案内せずともよいのかね?」
アン:「故郷を追われた時から覚悟を決めているわ。例え骨になろうともそれが私の運命。受け入れる覚悟は出来ている!」
グリーンマン:「そうか。残念だ。本当に、残念だ。骨になるなんて、そんなの、本当に、もったいない・・・」と笑みを称えて二人を見送ります。

これを、

<b>グリーンマン:</b>「”私”は構わないのだが。本当に案内せずともよいのかね?」

<b>アン:</b>「故郷を追われた時から覚悟を決めているわ。例え骨になろうともそれが私の運命。受け入れる覚悟は出来ている!」

<b>グリーンマン:</b>「そうか。残念だ。本当に、残念だ。骨になるなんて、そんなの、本当に、もったいない・・・」と笑みを称えて二人を見送ります。

こうしたいのです。wordpressでは、一度の改行で「<br>」、二度の改行で「<p>」としても処理されるので、改行を自動でつけるようにもしたいところ。

そういうわけで、ゴリゴリ書いていきますね。

投稿時に内容に処理を挟むには「content_save_pre」フィルター

名前の通り、内容を保存する前に働くフィルターです。

function replace_post_cont($text) {
  $text = preg_replace_callback('/(trpgreplay.*?>)(.*?)(?=</div>)/ius', "trpgreplay", $text);

  return $text;
}

add_filter('content_save_pre', 'replace_post_cont');

記事を保存するときに、「replace_post_cont」関数が働きます。「replace_post_cont」は記事を正規表現で整えるために用意しました。

「preg_replace_callback」は正規表現により抜き出した内容を、さらに関数を使って処理を挟むことができます。かなり便利です。

TRPGリプレイはdivタグの「trpgreplay」クラスを使用しているので、これを検索、中身を抜き出しています。

function trpgreplay($matches) {
  $text = preg_replace("/r/ius", "", "$matches[2]");
  $text = preg_replace("/n+/ius", "n", "$text");
  $text = preg_replace("/n(?!n)/iu", "nn", "$text");
  $text = preg_replace("/^(?!<)(.*?:)/ium", "<b>$1</b>", "$text");
  return $matches[1].$text;
}

そしてリプレイを整形しているのがこれです。「$matches」配列の[0]はマッチングした全体、[1]は$1にマッチングした部分、[2]は$2にマッチングした部分が収納されています。この場合、[1]には「trpgreplay”>」が、[2]には「リプレイの内容」が収納されています。

  $text = preg_replace("/r/ius", "", "$matches[2]");

内容のデータには「r」と「n」といった改行コードが混在している可能性があるので、「r」をまず全て消します。(正規表現じゃなくて普通の置換でよかったかも)

$text = preg_replace("/n+/ius", "n", "$text");

連続した改行を全て単発の改行に直します。これでエディタで執筆した内容の改行がゆらいでも大丈夫です。

  $text = preg_replace("/n(?!n)/iu", "nn", "$text");

単発の改行を二つの連続した改行に直します。一旦クリーニングして再度二度改行してるわけですね。

  $text = preg_replace("/^(?!<)(.*?:)/ium", "<b>$1</b>", "$text");

行の始めが「<」で始まらない場合は「:」までをbタグで囲むという処理です。ここをミスると「<b><b><b><b>」とひどいことになります。

最後にreturnで戻して完了。最終的な形は下記となります。

function trpgreplay($matches) {
  $text = preg_replace("/r/ius", "", "$matches[2]");
  $text = preg_replace("/n+/ius", "n", "$text");
  $text = preg_replace("/n(?!n)/iu", "nn", "$text");
  $text = preg_replace("/^(?!<)(.*?:)/ium", "<b>$1</b>", "$text");
  return $matches[1].$text;
}
function replace_post_cont($text) {
  $text = preg_replace_callback('/(trpgreplay.*?>)(.*?)(?=</div>)/ius', "trpgreplay", $text);
  return $text;
}

add_filter('content_save_pre', 'replace_post_cont');

完璧! 満足ちゃん。

驚くほどシンプルでイカしたwordpressテーマ「wsc7」をカスタマイズしよう – その5 – 記事本文から自動で抜粋を作る

一連の記事→wordpressテーマをカスタマイズしよう Archives – aoringo works

今回は記事本文から抜粋を自動で作る機能を作りたいと思います。

ともあれ、「今の時点で抜粋自動でできてるじゃん?」というのもわかります。わかりますが、「必ずしも冒頭文をもってきもていいわけではない」という事ですよ。

続きを読む 驚くほどシンプルでイカしたwordpressテーマ「wsc7」をカスタマイズしよう – その5 – 記事本文から自動で抜粋を作る