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

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

まずは簡単に

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() – ページタイプをフィルターすることに特化した関数

ということでした。

 

px → rem 変換表

  14px基準 16px基準
8px 0.571428571rem 0.5rem 
10px 0.714285714rem 0.625rem 
11px 0.785714286rem  0.6875rem
12px 0.857142857rem 0.750rem
13px 0.928571429rem 0.8125rem
14px 1rem 0.875rem
15px 1.071428571rem 0.9375rem
16px 1.142857143rem 1rem
18px 1.285714286rem 1.125rem
20px 1.428571429rem 1.25rem
21px 1.5rem 1.3125
22px 1.571428571rem 1.375rem
24px 1.714285714rem 1.5rem
28px 2rem 1.75rem
30px    
32px 2.285714285rem 2rem
     
36px 2.571428571rem 2.25rem 
38px 2.714285714rem 2.375rem 
39px 2.7857142857rem  2.4375rem
40px 2.857142857rem  2.5rem

日本語は、16px基準の方が見やすいのでは?と思ったりします。

アップロードしたPDFの画像化

※追記有り

いつも面倒なPDFファイルの画像化。

WordPressでPDFをアップロードしたときにサムネイル画像を自動的に作ってくれればいいのになぁと思ってました。

サーバーサイドに何か組み込めば出来るんだろうとは思っていたのですが、自分で試行錯誤する前に、プラグインを探してみました。

Advanced uploader

 20140710-1

評価★は・・・無星ですが・・・使えそうです。

 

プラグインをインストールしたら、プラグイン一覧のページから

20140710-2

Settings をクリックすると、設定画面が開きます(通常のメディアの設定画面でも可)。

通常の項目の下に、あたらしくAdvanced uploaderの設定画面が追加されていますので

その中から

Replace Default Uploader に ✓ チェックを入れます。

20140710-3(この画像は、mediumサイズにしてみました。)

あとは、画像の時と同じように、アップロードして、投稿に挿入。

20140710-4投稿に挿入時に、挿入ボタンの上にATTACHMENT IMAGE というセレクトボックスが追加されているので、画像のサイズを選択。

この投稿のキャプチャ画面もアクロバットでキャプチャしたPDFファイルをそのまま、アップロードしてみました。

コレは使える!!

 

追記

生成されるthumbnailのサイズがおかしくなります。

指定した大きさで切り抜く、ハードクロップの指定が効かない模様。
全てのサイズがソフトクロップになってしまいます。

プラグインを有効にしておいて、PDFのアップロード時のみに適用した方が良さそうです。(アップロード時にどちらのアップローダーを使うかを選択できます。)