読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近は統計とAnsibleをさわりはじめたお(^ω^ = ^ω^)

【WordPress】下層ページかどうか判断するコード書いた

PHP WordPress

仕事中に書いてみたけど、なんか違う気がしてきた。。。

下層ページかどうか判断する関数が欲しかった。

自分で考えたフローとしては

  • トップページではないこと
    • アクセスされたパスに対し、WordPressのwebルートで置換してみる
    • 置換した値が '/' でなければ下層ページ
    • または、クエリパラメータ(検索とかで使う?s="")があれば下層ページ

WordPressfunctions.phpに追記したら使えるど。

<?php
/**
 * 下層ページか判断する
 * @return bool
 */
function isUnderPage()
{
    $url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
    $getPath = parse_url($url, PHP_URL_PATH);
    $query = parse_url($url, PHP_URL_QUERY);

    // wordpressのwebrootを作成
    $getWordpressPath =parse_url(home_url(), PHP_URL_PATH);

    // wordpressのwebrootで現在の$pathを置換
    $path = preg_replace("|".preg_quote($getWordpressPath . '/')."|", '', $getPath);

    // どっちも空であればトップページ
    if (empty($path) && empty($query)) {
        return false;
    }
    return true;
}

parse_url'()でurlを渡してほしい箇所だけ取得することができます。

置換するとき、urlにスラッシュとか入っているとエラーになるので、preg_quote()でエスケープしましょう。自分で正規表現書くよりは楽だし、正確かと。

とりあえずこれででき。。。ぁああああああああああ!!!

そういや、クエリパラメータがついていたら全部下層になるので、これではダメだ。トップページにクエリを渡したい場合は全部下層になっちゃう。。。!

ということは。。。。あれ難しくね? どうやって検索判断する?( ゚д゚)ハッ!

  • トップページではないこと
    • アクセスされたパスに対し、WordPressのwebルートで置換してみる
    • 置換した値が '/' でなければ下層ページ
    • is_search()で検索だったら下層ページ

クエリパラメータで判断せずに、is_search()で判断すればいいのでは。これでよし。

2016年9月30日

その他

今週は結構忙しかった。。。

なんか詰め将棋みたいにタスクを詰められて詰められてパタパタしていた感じ。

プログラムだけやっていたいけど、中々難しいね。

話変わるけど、今月はブログを毎日更新することだけに力を入れました。

今年の3月あたりからデスマが続いて、中々更新することが減り、8月下旬には「あれ?全然更新してねぇな」ってなった。

一番びびったのが、これまで習慣になっていったブログが、習慣が消えることだった。これってやばくね? 歯を磨き忘れることと一緒だと思うのね。

やべぇやべぇぱねぇ!って今月は上旬から更新することだけに力を入れてきました。更新することだけ。

仕事中にメモとった内容をアップしてもよし。適当に思いついた短い文章でもよし。とりあえず毎日更新すること。

今もさっき帰宅したばかりで、ビールを飲んでいたら「( ゚д゚)ハッ!ブログ更新しなきゃ!」ってなった。

いいよいいよ。この感じ。なんか戻ってきたよ。

振り返ることや、頭のインデックスのためのブログなので、投稿しなきゃ意味がない。俺はブロガーになるためにブログをやっているわけじゃないのだ。

www.aipacommander.com

もう私もブロガーって呼ばれてもいいんじゃないかな?(^^ あーもうブロガーだな。絶対ブロガーだな。プログラマを副業にしてブログメインにしようかな。よーし隊長がんばっちゃうぞー(^^

・・・・・・・

・・・・・俺はブロガーになるためにブログをやっているわけじゃないのだ!°ω°)

なにはともあれ、9月も終わり、残すはあと3ヶ月。

何ができるかなー? 何をしようかなー?

ビールを飲みながら、この記事を書いている私でした。

このビールまぁまぁうまいんじゃね? 見た目アレでしたが。。。

f:id:aipacommander:20160930231806j:plain

【Visual Basic】アプリケーションのビルド失敗&MyBase Meとかがcannot readになる

Visual Basic

gitの管理で、ファイル除外とかした後に、ビルドしてみたら、アプリケーションが立ち上がらなくなった。

調べてみると、コードのあちこちがまっかっか。MyBaseとかMeとかの記述でエラーが発生している。ロードできないんだって。知らんし。

色々試したところ。下記の方法で起動できるようになった。

~/bin~/obj~/My Resourceディレクトリを削除。この3つを削除したらうまく起動できるようになった。

【WordPress】カスタム投稿タイプのTaxonomyをエクスポート。それをPost Typeのところでインポートしたらぶっ壊れた

WordPress

大変なことになった。。。。

f:id:aipacommander:20160928224924p:plain

ふぇえええええええええ!!!!?

このエラーがいっぱいいっぱい。

もううまく動かないし、どこをどう復旧していいのかわからない。

ちょうど案件引き継ぎのタイミングで、ローカルでsqldump叩いていたので、バックアップsqlでDB上書き。

もとに戻った。。。ε-(´∀`*)ホッ

自分のローカル環境なのでセフセフ。これが本番だったら。。。。。オエ

【WordPress】add_filter()とapply_filters()

WordPress PHP

header.phpのなかに検索フォームがあるんだけど、特定のページには、その下に検索情報を追加したいとのこと。

おーう。めんどくせぇ。header.php増やす?増やせるけど、きたねえなおい。

ってなったけど。よく考えたらadd_filter()あんじゃん。それの逆で自分でfilterを登録できるやつをheader.phpに追記すればいいじゃんと思った。

ということでできました。

関数リファレンス/add filter - WordPress Codex 日本語版

関数リファレンス/apply filters - WordPress Codex 日本語版

  1. apply_filters('名前', 'filterにフックした関数に渡す値')を、フックを実行したい箇所に書く
  2. functions.phpとかで、add_filter('apply_filterで宣言した名前', '実行したい関数')する

これが流れ。

<?php
// ... 省略
<?php apply_filters('after_search', ''); ?>
<?php
add_filter('after_search', function($string) {
    get_template_part('template-parts/parts', 'area-link');
    return $string;
});
get_header(); ?>

これでうまくいきましたぁあああ!!!