この空白はなんですか?

flash1

ちまたの、「ちょっとおしゃれな人たち」の保有率が格段に高いiPhoneやiPad。

9月9日には新らしい端末が発表されると噂のiPhoneですが、
クロッキーワークスでも、初心者の方にオススメしているのはiPadやiPhone。
ただ、iPhoneは高齢の方には小さすぎる・・・

今回の発表で、少し大型のものが出ると噂なので、期待大!!

そんな、iPhoneとiPadですが、欠点は標準でFlashを使ったサイトが見えないこと。

パソコンでは、見えているスライドショーやメニュー、アニメーションなどが、単なる

「空白」

 なんです。不自然なスペースが空いているだけ。

これはもったいない。

是非ともそのサイト非Flash化のお手伝いさせてください!

・Flash部分のみの差し替え
・いっそのこと、スマートフォン・タブレットの専用サイトの開設
・サイトフルリニューアルで、いろいろな端末からも見えるようにリニューアル

など、様々なご提案をご用意しております。
お気軽にお問い合せください。

bodyのclassにスラッグを入れる

 「このページだけ h3要素は別の色」とかページによって背景の色を変えたいとか

bodyに標準で追加されるクラスは、投稿やページの番号を使用するので、サーバー移行時など、ポストの番号が変更になる恐れがあるときは使えないのですが、ページネームいわゆる「スラッグ」を使えばユニークなクラスを追加することが出来ます。

ただ、日本語でタイトルをつける場合は、スラッグは・・・そこで、スラッグ名を自動で英数字に変換時し、変換したスラッグ名を自動でbodyのクラスに追加すれば投稿やページ毎にユニークなクラス名をつけることが出来ます。

function.php

//スラッグを日本語からポストタイプとポストIDを使った英数字に変換
function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
  if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
   $slug = 'slug-'.utf8_uri_encode( $post_type ) . '-' . $post_ID;
  }
 return $slug;
}
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4  );
//bodyのクラスにスラッグを入れる
function add_pagename_class($classes = '') {
  global $post;
  if (is_page()) {
             $page = get_page(get_the_ID());
             $classes[] = $page->post_name;
         }
    return $classes;
}add_filter('body_class','add_pagename_class');

 ちなみに、ちょっと変更すればいろいろなモノを追加できることが分かります。

//bodyのクラスに親のスラッグを入れる
function add_ancestor_class($classes) {
    global $post;
    if (is_page() && (!is_front_page()) ){
        if($post->ancestors){
            foreach($post->ancestors as $post_ancestor_id){
                $post_id = $post_ancestor_id;
            }
        } else {
            $post_id = $post->ID;
        }
        $ancestor_post = get_page($post_id);
        $ancestorSlug = $ancestor_post->post_name;
        $classes[] = 'ancestor_'.$ancestorSlug;
    }
    return $classes;
}
add_filter('body_class','add_ancestor_class');
//bodyのクラスにtaxonomyのスラッグを入れる
function add_taxonomy_class( $classes ){
  if( is_singular() )
  {
    $custom_terms = get_the_terms(0, 'display');
    if ($custom_terms) {
      foreach ($custom_terms as $custom_term) {
        $classes[] = 'tax_' . $custom_term->slug;
      }
    }
  }
  return $classes;
}
add_filter('body_class','add_taxonomy_class');

すべてfunction.phpを変更するので自己責任でお願いします。

もし更新後に「真っ白」になってしまったら慌てず、
FTPでfanction.phpをダウンロードして、間違いを修正してからアップロードすれば元に戻るはず。

簡単なオリジナルテンプレートタグの作り方

使い方は色々ですが、電話番号とかをオリジナルのテンプレートタグにしたり、長ぁ〜いテンプレートタグを短くしてみたり、お問い合わせ一覧出力するテンプレートタグをオリジナルで作れたりします。

まずは簡単に

function.php
[php]
/*でんわ番号 */
fudenction telcode(){
echo ‘TEL:0956-59-8587’;
}
[/php]

出力したいテンプレートに
[html]

<?php telcode();?>

[/html]


TEL:0956-59-8587
と出力されます。

実際に使ってるのがこれ
カスタムフィールドで商品価格のフィールドを作ってテンプレート上で消費税と3桁区切りで表示するコード

function.php

[php]
// 現在の日付を取得
$dt = new DateTime();
$dt->setTimeZone(new DateTimeZone(‘Asia/Tokyo’));
$today = $dt->format(‘Y-m-d H:i:s’);

// 消費税8%の施行日付を設定
$start_day = ‘2014-04-01 00:00:01’;
// 日付を比較
$tax = 1.05;//旧消費税率
if (strtotime($today) >= strtotime($start_day)) {
$tax = 1.08;//新消費税率
}

function fee($fee) {
global $tax;
$fee = $fee*$tax;
$oku = floor($fee / 100000000);
$man = floor(($fee % 100000000) / 10000);
$nokori = ($fee % 100000000) % 10000;
$result = ”;
if ($oku) $result = number_format($oku) . ‘<span class="toYenOku">億<span>’;
if ($man) $result .= number_format($man) . ‘<span class="toYenMan">万</span>’;
if ($nokori) $result .= number_format($nokori);
if($result):
echo ‘<span class="toYen">’.$result.'</span><span class="toYenYen">円</span>’;
endif;
}
[/php]

使いたいテンプレートで
カスタムフィールド item_price を $price として取得 テンプレートタグfree()にいれる
[html]
<?php $price = get_post_meta($post_id, ‘item_price’, $single); ?>
<?php fee($price);?>
[/html]

みたいな感じで桁区切りと消費税計算して表示出来るし、カスタムフィールドのitem_priceは文字列ではなく数値なのでitem_priceの値でソートしてクエリすることも可能。
ついでに、消費税が10%になっても大丈夫!

カスタム投稿タイプのサイドバー

カスタム投稿タイプで

直近の●●件
カテゴリー一覧
月別・年度別アーカイブ

を表示したいとき

  • パーマリンクの設定はデフォルト
  • カスタムポストのカテゴリーはtaxonomy追加で、”カスタムポスト名_cat”

こんな感じのページが出来ます。
http://halu-g.jp/?post_type=report

sidebar.phpとかに

//直近の5件
&lt;ul&gt;
&lt;?php
global $post;
$post_type = get_post_type();
$args = array (
 'post_type' =&gt; $post_type,
 'orderby' =&gt; 'post_date',
 'order' =&gt; 'DESC',
 'numberposts' =&gt; 5
);
$my_posts = get_posts( $args );
foreach ($my_posts as $post) :
 setup_postdata( $post );
?&gt;
&lt;li&gt;&lt;a href="&lt;?php the_permalink();?&gt;"&gt;&lt;?php the_title();?&gt;&lt;/a&gt;&lt;/li&gt;
&lt;?php
endforeach;
wp_reset_postdata();
?&gt;
&lt;/ul&gt;


&lt;p&gt;カテゴリー&lt;/p&gt;
&lt;ul&gt;
&lt;?php wp_list_categories(array('title_li'=&gt;'', 'taxonomy'=&gt;$post_type.'_cat', 'show_count'=&gt;1)); ?&gt;
&lt;/ul&gt;

&lt;p&gt;月別アーカイブ&lt;/p&gt;
&lt;ul&gt;
&lt;?php
 add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 );
 add_filter( 'get_archives_link', 'my_get_archives_link', 10, 2 );

//直近の12ヶ月分
$my_archive = wp_get_archives('type=monthly&amp;post_type='.$post_type.'&amp;show_post_count=1&amp;limit=12&amp;echo=0');
//年と月を別のフォーマットにかえたいとき利用
//$my_archive = str_replace( array("年"), '.', $my_archive );
//$my_archive = str_replace( array("月"), '', $my_archive );

echo $my_archive;
?&gt;
&lt;/ul&gt;

&lt;p&gt;年間アーカイブ&lt;/p&gt;
&lt;ul&gt;
&lt;?php
echo wp_get_archives('type=yearly&amp;post_type='.$post_type.'&amp;show_post_count=1');
remove_filter( 'getarchives_where', 'my_getarchives_where');
remove_filter( 'get_archives_link', 'my_get_archives_link' );
?&gt;
&lt;/ul&gt;

</pre><p><br />function.php</p><pre>//++++++++++++++++++++++++++++++++++++++++++++++
//カスタム投稿のアーカイブ
//
function my_getarchives_where( $where, $r ) {
 global $my_archives_post_type;
  $my_archives_post_type =get_post_type();
$my_archives_post_type = get_post_type();
 if ( isset($r['post_type']) ) {
 $my_archives_post_type = $r['post_type'];
 $where = str_replace( '\'post\'', '\'' . $r['post_type'] . '\'', $where );
 }
 return $where;
}
 
//
// ?post_type=任意の名前(パラメーター) を追加する
//
function my_get_archives_link( $link_html ) {
 global $my_archives_post_type;
 $my_archives_post_type = get_post_type();
if ($my_archives_post_type != '') {
 $add_link = '&amp;post_type=' . $my_archives_post_type;
 $link_html = preg_replace('@&lt;/a&gt;(.+?)&lt;/li&gt;@', '年&lt;/a&gt;$1&lt;/li&gt;', $link_html);
 }
 return $link_html ;
}

get_posts() と get_pages() を使い分ける

投稿を抽出するのは、get_posts() 

ページを抽出するのは、get_pages()

それぞれに特化した関数という説明が多いのですが、何が違うのか、まとめてみました。

使用例:カスタムポスト news を

    $args = array( 
        'order' => 'DESC', 
        'post_type' => array('news'),
      );
$posts_array = get_post($args);
 var_dump($posts_array);

$pages_array = get_pages($args);
 var_dump($pages_array);

 

dumpされて帰ってくるのは

get_post() get_pages()
[“ID”] [“ID”]
[“post_author”] [“post_author”]
[“post_date”] [“post_date”]
[“post_date_gmt”] [“post_date_gmt”]
[“post_content”] [“post_content”]
[“post_title”] [“post_title”]
[“post_excerpt”] [“post_excerpt”]
[“post_status”] [“post_status”]
[“comment_status”] [“comment_status”]
[“ping_status”] [“ping_status”]
[“post_password”] [“post_password”]
[“post_name”] [“post_name”]
[“to_ping”] [“to_ping”]
[“pinged”] [“pinged”]
[“post_modified”] [“post_modified”]
[“post_modified_gmt”] [“post_modified_gmt”]
[“post_content_filtered”] [“post_content_filtered”]
[“post_parent”] [“post_parent”]
  [“guid”]
[“menu_order”] [“menu_order”]
[“post_type”] [“post_type”]
[“post_mime_type”] [“post_mime_type”]
[“comment_count”] [“comment_count”]
[“filter”] [“filter”]

ということでほぼ同じ

で、 使えるフィルターは、

get_post() get_pages()
posts_per_page  child_of
offset sort_order
category sort_column
orderby hierarchical
order exclude
include include
exclude  
meta_key meta_key
meta_value meta_value
post_type authors
post_mime_type parent
post_parent exclude_tree
post_status number
suppress_filters offset
  post_type
  post_status

コレを比較すれば、

まぁ、何が特化されているのかがわかりやすい。

 

get_posts() – 投稿をフィルターすることに特化した関数
get_pages() – ページタイプをフィルターすることに特化した関数

ということでした。