Categories
PHP+MySQL WordPress ホームページ制作・作成

WordPress で「この記事を書いた人」を作成

管理画面のプロフィールの情報を用いて「この記事を書いた人」を作成。

コーポレートサイトの場合、社長やスタッフのブログに利用できるのではないかと・・・。

まずは functions.php で次を入力し、管理画面のプロフィールページに項目を増やす。

function userSnMeta($sns)
{
	$sns['twitter']   = 'Twitter(twitter.com/以降)';
	$sns['facebook']  = 'Facebook(facebook.com/以降)';
	$sns['instagram'] = 'Instagram(instagram.com/以降)';
	return $sns;
}
add_filter('user_contactmethods', 'userSnMeta', 10, 1);

テンプレートで呼び出す場合は以下。

// プロフィール情報の入力有無で判定
if(!empty(get_the_author_meta('user_description')))
{
	the_author(); // ブログ上の表示名
	echo( get_avatar( get_the_author_meta( 'ID' ), 80 ) );	// アバター
	the_author_meta('user_url');	// webサイト
	the_author_meta('twitter');		// Twitter (functions.phpで追加した項目)
	the_author_meta('facebook');	// Facebook (functions.phpで追加した項目)
	the_author_meta('instagram');	// Instagram (functions.phpで追加した項目)
	the_author_meta('user_description');	// ユーザー情報
}
Categories
PHP+MySQL

電話を制御する

最近1年間、インターネットとは少し逸脱した案件を受けております。
なにかといいますと馴染みのある例をあげますと

「宅配便の不在票などで再配達の日付や時間帯を受話器のキーで選択させるシステム」

です。実際は、宅配業者ではなく、飲食店をチェーン展開している企業になります。
かかってきた電話に対しスタッフがでることができないケースは多々あります。
そのため「予約」や「折返し希望」などをシステムで受けて、必要であれば、スタッフが後ほど電話することが可能です。
つまりビジネスロスの低減につながります。

また、複数の部署をお持ちの企業の場合、1本の電話で要件毎に転送先を選択させることも可能です。

上記のような電話の応対(コールセンター)システムをお探しの場合は、当オフィスまでお気軽にお問い合わせください。
Twilioをベースに貴社にあったシステムを提案・構築致します。

Categories
PHP+MySQL

PHP で住所から都道府県を取り除く

住所から都道府県を取り除くサンプルは検索するとたくさんヒットしますが、次の条件でのご依頼があり、悩みましたのでここに記載しておきます。

  • (都道府県)+(市区町村から番地)+(建物名から部屋番号)が1つの文字列である。
  • (都道府県)が記載されている場合とない場合がある。
  • (建物名)に都道府県の名称が含まれている場合がある。

上の条件の住所を「(市区町村から番地)+(建物名から部屋番号)」で統一したい」がご依頼内容です。
「鹿児島県鹿児島市~」もあれば「鹿児島市~」もあり、さらに建物名に「鹿児島県」があったり・・・。
検索すると正規表現を利用しての例などいろいろありましたが、結果的に以下のコードに落ち着きました。
要は住所の頭3文字を抽出し、該当する都道府県名を選出。選出した都道府県名の文字列を取得して、住所の先頭からその文字列分を抽出し選出した文字列と比較し処理する方法です。文章で説明するよりコードをみた方がわかると思います。

<?php
define( '_CHARSET', 'UTF-8' );

function setPref( $mode ){
	$pref = array(
				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 => '和歌山県',
				31 => '鳥取県',
				32 => '島根県',
				33 => '岡山県',
				34 => '広島県',
				35 => '山口県',
				36 => '徳島県',
				37 => '香川県',
				38 => '愛媛県',
				39 => '高知県',
				40 => '福岡県',
				41 => '佐賀県',
				42 => '長崎県',
				43 => '熊本県',
				44 => '大分県',
				45 => '宮崎県',
				46 => '鹿児島県',
				47 => '沖縄県'
			);
	if( $mode == 1 ){
		$pref[14] = '神奈川';
		$pref[30] = '和歌山';
		$pref[46] = '鹿児島';
	}
	return( $pref );
}

function prefFormat( $str = '' ){
	$address = '';
	if( strlen( $str ) > 0 ){
		$add         = $str;
		$prefListAll = setPref( 0 );
		$prefList3tx = setPref( 1 );
		$cutFirstAdd = mb_substr( $str, 0, 3, _CHARSET );
		$prefNo      = array_search( $cutFirstAdd, $prefList3tx );
		if( $prefNo > 0 && $prefNo <= count( $prefList3tx ) ){
			$prefLen = mb_strlen( $prefListAll[$prefNo], _CHARSET );
			$cutStr  = mb_substr( $str, 0, $prefLen, _CHARSET );
			if( $prefListAll[$prefNo] == $cutStr ){
				$add = mb_substr( $str, mb_strlen( $prefListAll[$prefNo], _CHARSET ), mb_strlen( $str, _CHARSET ), _CHARSET );
			}
		}
		$address = mb_convert_kana( $add, 'KVas', _CHARSET );
	}
	return( $address );
}

$str = '神奈川県相模原市中央区淵野辺1-19-25 神奈川県のある建物';
echo( prefFormat( $str ) );
?>
Categories
PHP+MySQL

SQL で文字列追加

データベースを扱ったシステムを構築すると

UPDATE `table_name` SET `column` = `column` + 1 WHERE `id` = 1

のように数字を加算(もしくは減算)し更新させることはよくあることですけど、文字列は?

UPDATE `table_name` SET `column` = `column` + "+アイウエオ" WHERE `id` = 1

とやっても当然のごとく意図した通りに動作しません。
どのようにするかと・・・。

UPDATE `table_name` SET `column` = CONCAT( `column` + "+アイウエオ" ) WHERE `id` = 1

できた。(^^)

Categories
PHP+MySQL

配列から値を検索する array_search

配列の値を検索する関数として array_search があるのですが、

$array = array( 'あ', 'い', 'う', 'え', 'お' );
if( array_search( 'え', $array ) ){
	echo( 'ある' );
} else {
	echo( 'ない' );
}

では、「ある」が表示されますが、配列の先頭である「あ」を検索対象とした場合、

$array = array( 'あ', 'い', 'う', 'え', 'お' );
if( array_search( 'あ', $array ) ){
	echo( 'ある' );
} else {
	echo( 'ない' );
}

結果は「ない」になります。array_search の戻り値はインデックスです。つまり「あ」の戻り値は「0」であり、if 文で FALSE になってしまうことが原因です。なので、

$array = array( 'あ', 'い', 'う', 'え', 'お' );
if( array_search( 'あ', $array ) !== FALSE ){
	echo( 'ある' );
} else {
	echo( 'ない' );
}

とするのが意図した通りの結果になります。但し「配列に値があるか否か」だけであれば、in_array を使った方が悩まずに済むかと。

$array = array( 'あ', 'い', 'う', 'え', 'お' );
if( in_array( 'あ', $array ) ){
	echo( 'ある' );
} else {
	echo( 'ない' );
}

基本的なことなのですが、先ほど忘れて悩んだので。(^^;