footer の電話と地図ボタンの動作設定

footer の電話と地図ボタンの動作設定

まず電話番号から

<?php echo post_custom("tel")?>

で電話番号がでるので

<li><a href="#" data-icon="phone">電話</a></li>

の部分をかえてみます

電話発信用のリンクを設定する

にあるように

<a href="tel:0312345678">電話はこちらへ</a>

というように

href="tel:電話番号"

となるようにすればOK

<li><a href="tel:<?php echo post_custom("tel")?>" data-icon="phone">電話</a></li>

でOK
ただしPCでは確認できないので
ipod touch や スマホでの確認が必要

次にナビ機能

href="http://maps.google.com/maps?q=クエリ"

で起動するので

地図に関しては

<?php echo post_custom("Address")?>

で取得できるので

<li><a href="#" data-icon="location">地図</a></li>

<li><a href="http://maps.google.com/maps?q=<?php echo post_custom("Address")?>" data-icon="location">地図</a></li>

とすることで
google map によるナビが起動します

こちらはPCで動作確認できました

今回の変更で footer.php は以下のようになります

</div>
<div data-role="footer" <?php if(is_single()):?>data-position="fixed"<?php endif;?>>
<?php if(is_single()):?>
 <div data-role="navbar">
        <ul>
          <li><a href="tel:<?php echo post_custom("tel")?>" data-icon="phone">電
話</a></li>
          <li><a href="http://maps.google.com/maps?q=<?php echo post_custom("Address")?>" data-icon="location">地図</a></li>
          <li><a href="#" data-icon="edit">tweet</a></li>
        </ul>
      </div>
<?php endif; ?>
</div>
 Copyright 2015 <?php if(date_i18n('Y')!=2015){
   echo '- ';
   echo date_i18n('Y');
 } ?><br>
 <?php bloginfo('name'); ?>
</div>
</div>
<?php wp_footer(); ?>
</body>
</html>

お店情報ページのカスタマイズ

お店情報ページのカスタマイズ

まずは、投稿記事にサムネイル画像が表示されるようにソースを書き換えます

なお、サムネイルをダッシュボードで設定するには
functions.php で

add_theme_support('post-thumbnails');

の追記が必要になります

  <img src="image/tee.jpg" alt="" width="300" height="300">

の部分を

<?php if(has_post_thumbnail()): ?>
   <?php the_post_thumbnail('medium'); ?>
<?php else : ?>
        <img src="<?php echo get_template_directory_uri();?>/img/noimage.png" width="300" height="300"/>
<?php endif;?>

とします

これでサムネイル画像が表示されます

cshop

なお
post_thumbnail()の
パラメータでサイズ指定ができます

the_post_thumbnail();                 
// パラメータなし -> 'post-thumbnail'サムネイル
 
the_post_thumbnail( 'thumbnail' );      
// サムネイル(デフォルト 150px x 150px :最大値)

the_post_thumbnail( 'medium' );         
// 中サイズ(デフォルト300px x 300px:最大値)

the_post_thumbnail( 'large' );          
 // 大サイズ(デフォルト640px x 640px:最大値)

the_post_thumbnail( 'full' );            
// フルサイズ (アップロードした画像の元サイズ)
 
the_post_thumbnail( array(100, 100) );  
// 他のサイズ

詳しくは
テンプレートタグ/the post thumbnail

の解説を参考に

これでサムネイルが表示されるようになったので
次に簡単にお店にアクセスできるように
ボタンを追加していきます

footer.php の最初の div の下へ

 <div data-role="navbar">
        <ul>
          <li><a href="#" data-icon="phone">電話</a></li>
          <li><a href="#" data-icon="location">地図</a></li>
          <li><a href="#" data-icon="edit">tweet</a></li>
        </ul>
      </div>
</div>

を追加します

これでフッターにボタンが表示されます

cshop2

これでフッターのソースfooter.php は

</div>
<div data-role="footer">
 <div data-role="navbar">
        <ul>
          <li><a href="#" data-icon="phone">電話</a></li>
          <li><a href="#" data-icon="location">地図</a></li>
          <li><a href="#" data-icon="edit">tweet</a></li>
        </ul>
      </div>
</div>
 Copyright 2015 <?php if(date_i18n('Y')!=2015){
   echo '- ';
   echo date_i18n('Y');
 } ?><br>
 <?php bloginfo('name'); ?>
</div>
</div>
<?php wp_footer(); ?>
</body>
</html>

となります

xargs 使い方

xargs 使い方

xargs コマンドの詳細については

【xargs】標準入力から生成したコマンドラインを実行する

を参考に

xargs コマンドは
-I目印
とすると、この目印に標準入力から読み込んだ文字列を
代入する

例えば

ls testdir | xargs -I{} cp testdir/{} /tmp/{}.bk

だった場合
ls testdir
の結果が {} に代入され
cp testdir/{} /tmp/{}.bk
が実行される
-I変数名と考えるとわかりやすい
{} 以外にも @ でもok

スクリプトメモ

スクリプトメモ

bash コマンドは日経Linux のコマンド一覧に
載っていないので検索

http://kazmax.zpp.jp/cmd/b/bash.1.html
によれば

bash -e 


コマンドが0以外の終了ステータス
つまりエラーがあれば終了するようになる

これは処理の最後に

rm -Rf “./$dir”

として
$dir がからのままここに来ないようにする

ただし -e オプションは途中で以上終了しても
止まってくれない

#!/bin/bash

false| true

echo "止まらない"

true| false

echo “止まる"

というファイルを実行すれば結果がわかる

止まらない
止まる

というように結果として止まらない

なので bash -e を信用しないこと

PIPESTATE などで判断するといい

次に exec コマンド

【 exec 】 現行のジョブに置き換えてコマンドを続行する

を参考にするといい

これは標準エラーを捨てるのにも使われる

exec 2> /dev/null

とすれば /dev/null
に出力され消えることになる

主な書式は
exec2 > file
とすれば
以後のシェルスクリプトのエラー出力を
file に書き出す
というようになる

書籍にある

exec2 > ./$(basename $0).$(date + %Y%m%d%H%M%S).log

とすれば
実行ファイル名.日付.log
というファイル名になる

bash のオプションに
xvとあるけど
どっちもログを標準エラー出力にする
違いは
bash – コマンド (プログラム) の説明 – Linux コマンド集 一覧表
を参考に
$(basename $0)
はシェルスクリプトの名前
試しに

vim test.bash

で作成

#!/bin/bash


basename "$0"


echo $0

実行するとわかるけど
echo との違いはパスを含まず
ファイル名だけ表示されること
結果は

test.bash

/home/vagrant/test.bash

というようになる
判定で、それぞれ変数dir に日付が入っているか
そして
本日付の圧縮ファイルがあるかを調べるのが

dir="$(date +%Y%m%d)"

[ ! -e "$dir.tar.gz” ]

の部分

-gt はシェルスクリプトの比較演算子

-e もおなじ

シェルスクリプトの条件式や演算子におけるメモ

を参考にソースを読むことに

-e の意味は、ファイルが存在するなら

という意味

-gt は〜より大きいという意味

英語の greater than の略

-gt については

#08 条件式を評価してみよう (1)

を参考にしました

!は条件の反転になるので
! -e ならファイルが存在しないのならという意味に

なお
[Sh]簡素なif文は一行で書く[Sh]簡素なif文は一行で書く

でわかったのですが
シェルスクリプトの場合1文で書くときには
if を省けるようです
このため、今回の [] の中身は if の判定でした

このため

[ "$dir" -gt "20140101” ]

は日付が 20140101 より大きいのなら
という判定になり

[ ! -e "$dir.tar.gz” ]


日付.tar.gz というファイルが存在しないのなら
という判定になります

wordpress 管理画面にアイキャッチ画像の表示

wordpress 管理画面にアイキャッチ画像の表示

管理画面でサムネイル画像を設定できると
投稿が楽になるので設定をします

functions.php にコードを追記すれば可能になります

add_theme_support('post-thumbnails');

を追記します

これでカテゴリの下で
アイキャッチ画像の設定ができるようになります

とはいっても最初から素材を用意するのは大変なので
無料写真素材サイト
FOODIE’S FEED

のものを使わせていただくことにします

ちなみに画像のアップロードにはサイズ変更をしておかないと投稿できません

基本的には2MBです

今回は centOS 6.5 での変更になります

 vim /etc/php.ini


801行めの

upload_max_filesize = 2M

upload_max_filesize = 2000M

に変更してアップロードできるサイズをあげます

post_max_size = 8M

post_max_size = 2000M

に変更
これでPOSTするサイズもあげます

ダッシュボードの投稿から
アイキャッチ画像を決定をクリック

ai

ファイルアップロードをクリックし

ai3

ファいるをアップロードしたら
アイキャッチ画像を設定
をクリックします

ai4

これでアイキャッチ画像の設定ができたので
次に
一覧画面でアイキャッチ画像が見えるようにします

page.php の中の

<img src="image/tee.jpg"  />

の部分を
wordpress のテンプレに書き換えます

このときにサムネイルがないときのことも考えて
判定をして表示するようにします

判定は

<?php if(has_post_thumbnail()): ?>
   <?php the_post_thumbnail(); ?>
<?php else : ?>
        <img src="<?php echo get_template_directory_uri();?>/img/noimage.png"/>
<?php endif;?>
<?php the_title(); ?></a></li>

となります

<?php if(has_post_thumbnail()): ?>

でサムネイルがあるか調べ
あるのなら

<?php the_post_thumbnail(); ?>

で表示します

サムネイルなしなら

<img src="<?php echo get_template_directory_uri();?>/img/noimage.png"/>

でサムネイル画像の代わりにイメージなし
という画像を表示します

これでリロードすると
一覧画面にサムネイル画像が反映されます

ai5

今回の変更によりコードは以下のようになります

<?php get_header();?>
<?php $paged = get_query_var('paged'); ?>
<?php query_posts("posts_per_page=10&paged=$paged"); ?>
<form action="" class="ui-filterable">
  <input type="text" id="keywd" data-type="search" placeholder="お店の名前を入力
">
</form>
<br>
<?php if (have_posts()): while(have_posts()): the_post(); ?>
  <ul data-role="listview" data-filter="true" data-input="#keywd">
    <li class="ui-li-has-thumbnail"><a href="<?php the_permalink(); ?>">
<?php if(has_post_thumbnail()): ?>
   <?php the_post_thumbnail(); ?>
<?php else : ?>
        <img src="<?php echo get_template_directory_uri();?>/img/noimage.png"/>
<?php endif;?>
<?php the_title(); ?></a></li>
  </ul>
<?php endwhile; else: ?>
<p>該当するお店がありません</p>
<?php endif; ?>
<?php get_footer(); ?>

固定ページで投稿記事一覧を表示

固定ページで投稿記事一覧を表示

固定ページへの一覧表示にあたり

[WP]WordPress で固定ページに記事一覧を出力する方法のまとめ

を参考にさせていただきました

今回は投稿記事を最新10件取得します

<?php $paged = get_query_var('paged'); ?>
<?php query_posts("posts_per_page=10&paged=$paged"); ?>

<?php get_header();?>

の下へ書き込みます

次に投稿記事があれば表示するという判定をつけます

<form action="" class="ui-filterable">
  <input type="text" id="keywd" data-type="search" placeholder="お店の名前を入力
">
</form>

の下へ

<br>
<?php if (have_posts()): while(have_posts()): the_post(); ?>

を追記します

そして
投稿記事がなかったときの処理を

<?php get_footer(); ?>

の上に書き込みます

今回はお店がないことを表示したいので

<?php endwhile; else: ?>
<p>該当するお店がありません</p>
<?php endif; ?>

これでループで表示できるようになりましたが
まだ表示のための処理が書いてないため
見た目はそのままになりますので
次に投稿記事を反映するようにコードをかえます

今の状態だと

    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/tee.jpg"  />お茶</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/cake.jpg"  />ケーキ</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/food.jpg"  />和菓子</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/cofee.jpg"  />ゼリー</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/blead.jpg"  />アイス</a></li>

ですが、ループ表示なので1つあれば十分です

 <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/tee.jpg"  />お茶</a></li>

だけ残して削除します

次に、お茶の部分を投稿記事のタイトル
リンクを投稿記事にかえます

お茶

<?php the_title(); ?>

へ変更

<a href="shop.html">

<a href="<?php the_permalink(); ?>">

へ変更します

これで保存すると投稿記事が一覧で表示されます

page

固定ページへのリンク作成

固定ページへのリンク作成

後々、カテゴリごとに記事一覧をだすけど
まずは投稿記事を一覧表示するようにします

まずは
その前にトップページからアイコンをクリックしたら
固定ページにリンクするようにします

wordpress の固定ページは

echo get_page_link();

で取得可能

get_page_php() の詳細については
関数リファレンス/get page link

を参考に

パラメータとして固定ページのIDを入れます
今回の場合 ID=35 なので

home.php の中の
sweet.html
というリンクをかえます

今回も vim の置き換え機能で一度に書き換えます

%s/sweet.html/<?php echo get_page_link(35);?>/g

これを実行すると
アイコンをクリックすると
固定ページの一覧にリンクするようになります

現在の home.phpのソースは

<?php get_header(); ?>

<!-- 1行目 -->
<div class="ui-grid-b">
  <div class="ui-block-a">

    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/wa.png" alt="" class="ic"><br>和食</a>
  </div>
  <div class="ui-block-b">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/chu.png" alt="" class="ic"><br>中華</a>
  </div>
  <div class="ui-block-c">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/yo.png" alt="" class="ic"><br>洋食</a>
  </div>
</div>

<!-- 2行目 -->
<div class="ui-grid-a">
  <div class="ui-block-a">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/cake.png" alt="" class="ic"><br>スイーツ</a>
  </div>

  <div class="ui-block-b">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/ramen.png" alt="" class="ic"><br>ラーメン</a>
  </div>
</div>

<!-- 3行目 -->
<div class="ui-grid-b">
  <div class="ui-block-a">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img class="ic" src="<?php echo get_template_directory_uri(); ?>/img/camera.png" alt="" ><br>カメラ</a>
  </div>
  <div class="ui-block-b">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/map.png" alt="" class="ic"><br>地図</a>
  </div>
  <div class="ui-block-c">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/tweet.png" alt="" class="ic"><br>ツイート</a>
  </div>
</div>
<?php get_footer(); ?>

となります

link

link2

次は page.php を編集します

証明写真をUbuntuで作成するアプリ

証明写真を自宅で作成するアプリを
Ubuntuへインストールしました

撮影には ipod touch のカメラ
もしくは Nexus7 のカメラを使用

撮影した写真から作成するには
おうちで証明写真 Gura Shot

を参考に行います

まず、Ubuntu に Gura Shot をインストール

最初に Gura を使う環境を整えます

http://www.gura-lang.org/Download.html

にインストール方法が載っているので
これを参考に行います

まずコンパイルに必要なものをインストール

sudo apt-get install build-essential cmake libreadline-dev rpm

次に
https://github.com/gura-lang/gura/releases/download/v0.6.2/gura-0.6.2-src.tar.gz
から
gura-0.6.2-src.tar.gz
をダウンロード

ダウンロードしたディレクトリに移動して

tar zxvf gura-0.6.2-src.tar.gz 

で展開

cd gura-0.6.2
mkdir build
cd build

でコンパイルのためのディレクトリ作成

../configure
make

でコンパイル

sudo ./setup-guest
./build-modules

でモジュールを作成

 sudo make install
sudo ldconfig  

でインストールになります

これで Gura の環境ができたので
Gura Shot をダウンロードします

https://github.com/gura-app/gurashot/releases/download/v1.3.0/gurashot-1.3.0.zip

から
Gura Shot をダウンロードします

これで実行は

gura gurashot.guraw 

でできると思ったのですが
ubuntu 12.04 で行うと

gurashot.guraw:6: ImportError: can't find a module named 'wx'
Traceback:
gurashot.guraw:6:
  import(wx)

となってしまいます

原因を調べた結果
Upgraded to Ubuntu 12.04, now import wx.lib.delayedresult fails

によれば

This issue is likely caused by changing directory standards between different versions of python-wx included in the different distributions (11.10 vs 12.04).
となっていて
バージョンが13.10 以降は
参照するディレクトリが違うのが原因のようです

仕方ないので
14.04 で実践することに

インストールまでは同じなので
Ubuntu 14.04 からX11転送で実行します

X11転送を利用したセキュアなリモートapp環境

を参考に設定を確認していきます

Ubuntu のデスクトップの場合
デフォルトでX11転送ができるはずなので

 vim /etc/ssh/sshd_config 

でファイルを開き

/X11
で検索

X11Forwarding yes
X11DisplayOffset 10

となっているのを確認します

次にssh でX転送ができるようにして接続します

これには -X オプションをつけて接続します

接続したら

https://github.com/gura-app/gurashot/releases/download/v1.3.0/gurashot-1.3.0.zip

でファイルをダウンロード

unzip gurashot-1.3.0.zip

で解凍し

 cd gurashot-1.3.0/
gura gurashot.guraw 

を実行すると無事エラー無く起動しました

grashot

wordpress 一覧ページの作成

wordpress 一覧ページの作成

まずはカテゴリを作成する

ダッシュボードの投稿 > カテゴリー

新規カテゴリに任意のカテゴリ名を入れ
新規カテゴリを追加
をクリック

cat

今回はサイトで使用するので
カテゴリに
和食
洋食
中華
スイーツ
ラーメン
を追加

次にカテゴリIDをしらべたいので 
ダッシュボードの
設定 > パーマリンク設定

デフォルト
をクリック

cat2

これでURL にカテゴリのIDが表示される

次に
投稿 > カテゴリで
今回追加したカテゴリを選び
表示をクリック

cat3

これで表示される
http://dev.dotinstall.com/wordpress/?cat=8
というように
最後の
?cat=8 という部分がカテゴリIDになる

cat4

これを後々使うのでメモしておく

和食   
http://dev.dotinstall.com/wordpress/?cat=5

洋食
http://dev.dotinstall.com/wordpress/?cat=6

中華
http://dev.dotinstall.com/wordpress/?cat=7

スイーツ 
http://dev.dotinstall.com/wordpress/?cat=8

ラーメン 
http://dev.dotinstall.com/wordpress/?cat=9

なおこれは私の環境の場合で
他の環境では変わるので注意

次に固定ページの作成
テンプレート作成に関しては
各固定ページのページデザインをテンプレート選択で可能にする方法

を参考に

まずは固定ページを新規作成

ダッシュボードで
固定ページ > 新規追加

お店一覧
として公開

このときにページIDを確認しておきます

cat6

今回の場合
http://dev.dotinstall.com/wordpress/?page_id=35

id は35です

次に固定ページテンプレートを作成します

まずはベースとなるファイルをコピーして
page.php を作成します

今回は以前一覧を表示した sweet.html から作成します

cp ~/wpt/sweet.html page.php

次にファイルの中身をwordpress の
ヘッダーとフッターにかえます

ヘッダー読み込みは

<?php get_header(); ?>
[/php

フッター読み込みは

?php get_footer(); ?>

で行います

これでまず一覧表示画面ができました

cat7

今回のソースは

<?php get_header();?>
<form action="" class="ui-filterable">
  <input type="text" id="keywd" data-type="search" placeholder="お店の名前を入力
">
</form>

  <ul data-role="listview" data-filter="true" data-input="#keywd">
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/tee.jpg"  />お茶</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/cake.jpg"  />ケーキ</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/food.jpg"  />和菓子</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/cofee.jpg"  />ゼリー</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/blead.jpg"  />アイス</a></li>
  </ul>
<?php get_footer(); ?>

となります

アーカイブの中からファイル抜き出し

アーカイブの中からファイル抜き出し

tar コマンドで固めたファイルは
解凍しなくてもディレクトリ構造をみることができる

例えば

sudo tar zcvf etc.tar.gz /etc/


/etc/ 以下を
etc.tar.gz 以下に固め
この中身の一覧を見るのなら
tオプションをつかう

tar ztvf etc.tar.gz |head -n5


一覧の中から5つだけ表示
結果は


drwxr-xr-x root/root         0 2015-07-29 20:37 etc/
-rw-r--r-- root/root       233 2010-01-12 22:28 etc/printcap
lrwxrwxrwx root/root         0 2015-01-12 18:34 etc/rc3.d -> rc.d/rc3.d
-rw-r--r-- root/root        58 2014-11-04 21:17 etc/networks
-rw-r--r-- root/root       158 2010-01-12 22:28 etc/hosts

となる

今度は、ファイルそのものを指定
ただし、一覧を指定しているのでファイル情報がでて
中身の表示ではない
本来は、ディレクトリなどを対象にして一覧をみるのにつかう

tar ztvf etc.tar.gz etc/networks

結果は

-rw-r--r-- root/root        58 2014-11-04 21:17 etc/networks

次に中身の取り出し
これは xオプションをつかう

tar zxvf etc.tar.gz etc/networks

とすると
etc というフォルダができ
その中に networks ファイルが入っている

ネットでよくみかけるtar の展開はほとんどこのタイプ

また、取り出さなくても
-O をつけることでファイルの中身をみることができる

tar zxvf etc.tar.gz etc/networks -O 

とすれば

etc/networks
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0

というように閲覧可能

この圧縮ファイルの中身をみるのは
zip 形式のものでもできる

例えば、過去に取得した wordpress
の圧縮ファイルの
latest-ja.zip

この中身をみるため、ファイル一覧を調べる
vオプションで詳細をみれる

今回は、数が多いので
head -n10
をつけて絞っている

unzip -v latest-ja.zip | head -n10

結果は

Archive:  latest-ja.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/
    8252  Defl:X     2979  64% 07-17-2014 18:12 5aa29ac6  wordpress/wp-mail.php
    2714  Defl:X     1217  55% 07-08-2014 01:42 96436a4e  wordpress/wp-load.php
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/wp-content/
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/wp-content/themes/
      28  Stored       28   0% 06-06-2014 00:59 fb11104a  wordpress/wp-content/themes/index.php
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/wp-content/themes/twentyfourteen/

となる

この中から
wordpress/wp-content/themes/index.php

の中身を表示するには pオプションをつかう

unzip -p latest-ja.zip wordpress/wp-content/themes/index.php


を実行すると

<?php

// Silence is golden.

という結果になる