「 WordPress」のページ記事
【Bootstrap】印刷時に表示されるURLを消す方法
これについての解説ページはこちら
wp_list_pages()
get_page_by_path()
スラッグ名をもつ固定ページのIDを取得する方法
[php]
$slug_name = $category;
$page = get_page_by_path($slug_name);
$page_ID = $page->ID;
[/php]
style.cssを4分割で管理
CSSの管理は、ほかに比べて簡単そうに見えるが、一番厄介ともいえる。
cssを管理するために、style.cssを4分割して管理することにする。
style.css
style-basic.css
style-parts.css
style-sidebar.css
サイドバーに最新の記事を投稿順に表示させるコード
サイドバーに「各サイトへのリンク(最新の記事投稿順)」の作成コード
[php]
<?php /* 各サイトへのリンク */?>
<div id="site-link">
<h2>各サイトへのリンク(最新の記事投稿順)</h2>
<ol>
<?php $sites=get_last_updated(); ?>
<?php foreach($sites as $site) : ?>
<?php if($site[‘blog_id’]!=1) : ?>
<li><a href="<?php echo get_home_url($site[‘blog_id’]); ?>"><?php echo get_blog_option($site[‘blog_id’],’blogname’); ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
</ol>
</div><!– end of #site-link –>
[/php]
カスタムフィールドにisbnを登録し、参考文献 を表示させる
固定ページのカスタムフィールドにisbnを登録することで書籍を表示させる。
次のコードをpage-sitemap.phpとpage-database.phpのtemplateに書き込む。
[サンプルページ] page-sitemap.phpの例 page-database.phpの例
[php]
<?php // 参考文献 の表示 ?>
<?php if(post_custom(‘isbn’)): ?>
<h6>参考文献</h6>
<div id="book_info">
<ul>
<?php
$list = get_post_custom();
$isbns = $list[‘isbn’];
foreach ($isbns as $isbn) {
_SESSION["isbn"]=$isbn;
get_template_part(‘content-amazon’);
}
?>
</ul>
</div><!– end #book_info –>
<?php endif; ?>
[/php]
Amazon アソシエイト isbnで検索するための関数
Amazon アソシエイト isbnで検索するための関数がようやく出来上がりました。
少々苦労しましたが、このページを参考にさせていただき無事完成しました。
[php]
function getAmazonBookInfo_isbn($isbn){
$xml = new stdClass;
// 必要なパラメータを揃える
$service = ‘AWSECommerceService’;
$access_key_id = ‘○○○○○○○○○○’; //アクセスキーID
$associatetag = ‘○○○○○○○○○○’; //アフィリエイトタグ
// パラメータの設定
$searchindex = ‘Books’; // all Books
$responsegroup = ‘Large’; // Images Medium Large
$isbn = rawurlencode($isbn);
//時刻認証パラメータ(Timestamp)作成
$timestamp = gmdate(‘Y-m-d’) . ‘T’ . gmdate(‘H:i:s’) . ‘Z’;
$timestamp = rawurlencode($timestamp);
//Amazon指定の順序でパラメータを並べる
$parameters = "AWSAccessKeyId=$access_key_id&AssociateTag=$associatetag&IdType=ISBN&ItemId=$isbn&Operation=ItemLookup&ResponseGroup=$responsegroup&SearchIndex=$searchindex&Service=$service&Timestamp=$timestamp&Version=2011-08-01";
//署名認証パラメータ(Signature)作成
$secret_access_key = ‘○○○○○○○○○○’; //シークレットアクセスキー
$host = ‘ecs.amazonaws.jp’;
$path = ‘/onca/xml’;
$string = "GETn$hostn$pathn$parameters";
$signature = rawurlencode( base64_encode(hash_hmac(‘sha256’, $string, $secret_access_key, true)) );
//ベースURLとリクエストパラメータを結合
$baseurl = ‘http://ecs.amazonaws.jp/onca/xml’;
$url = "$baseurl?$parameters&Signature=$signature";
//XMLパース
$xml = simplexml_load_file($url);
return $xml;
}
[/php]
content-book_sortのソースファイル
関連ページ:書籍検索(新書)
関連ページ:page-books_shinsho.php のソースファイル
[php]
<?php
// 初期設定
$sort_fg="5";
$sort_type="2";
$sort="ukeirebi desc";
if(isset($_POST[‘cmdClear’])){
$sort_fg=”;
$sort_type=”;
}elseif(isset($_POST[‘sort_fg’]) or isset($_GET[‘sort_fg’])){
if(isset($_POST[‘sort_fg’])){
$sort_fg=$_POST[‘sort_fg’];
$sort_type=$_POST[‘sort_type’];
}else{
$sort_fg=$_GET[‘sort_fg’];
$sort_type=$_GET[‘sort_type’];
}
if($sort_fg==1){
$sort="shomei_kana";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==2){
$sort="choshamei_kana";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==3){
$sort="haikabasho";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==4){
$sort="shuppannen";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==5){
$sort="ukeirebi";
if($sort_type==2){$sort=$sort . " desc";}
}
}
if($sort_fg==”){
$sort="";
}else{
$sort="order by " . $sort;
}
$_SESSION["sort"]=$sort; // $sortの保持
?>
<form method="post" action="http://www.rgb-green.tk/computer/programing/htmljavascript/javascript/tab/">
<table border="0">
<tr>
<td>
<input type="radio" name="sort_fg" value="1" <?php if($sort_fg==’1′){ echo ‘checked’;} ?>>書 名
<input type="radio" name="sort_fg" value="2" <?php if($sort_fg==’2′){ echo ‘checked’;} ?>>著者名
<input type="radio" name="sort_fg" value="3" <?php if($sort_fg==’3′){ echo ‘checked’;} ?>>配架場所
<input type="radio" name="sort_fg" value="4" <?php if($sort_fg==’4′){ echo ‘checked’;} ?>>出版年
<input type="radio" name="sort_fg" value="5" <?php if($sort_fg==’5′){ echo ‘checked’;} ?>>受入日
</td>
</tr>
<tr>
<td>
<input type="radio" name="sort_type" value="1" <?php if($sort_type==’1′){ echo ‘checked’;} ?>>昇順
<input type="radio" name="sort_type" value="2" <?php if($sort_type==’2′){ echo ‘checked’;} ?>>降順
<input type="submit" name="cmdSearch" value="検索">
<input type="submit" name="cmdClear" value="クリア">
</td>
</tr>
</table>
</form>
[/php]
page-books_shinsho.php のソースファイル
書籍検索(新書)のためのpage-books_shinsho.php のソースファイル
[php]
<?php
/**
* Template Name: page-books_shinsho
* 2014/08/19作成
*/
?>
<style>
/* 外部スタイルシートの読み込み */
@import "jquery-ui.css"; /* jQueryUI用CSS */
</style>
<script src="jquery.js"></script> <!– jQuery用ライブラリ –>
<script src="jquery-ui.js"></script> <!– jQueryUI用ライブラリ –>
<?php get_header(); ?>
<div id="container">
<div id="content">
<script>
////////////////////////////////////////////////////////////////////
// windowイベントの定義
////////////////////////////////////////////////////////////////////
//HTML文書読み込み完了後に実行するイベントの定義
window.addEventListener("load", function () {
resizeTo(400, 300); //ウィンドウサイズを指定
//タブ切り替えインターフェースの実装
$(‘#tabs’).tabs();
});
</script>
<?php
// 初期設定
$parent = fnc_parent_title_guid(); // 親ページのタイトルとGuidの取得
session_start();
$_SESSION["slug"]=$post->post_name;
$_SESSION["parent_title"]=$parent->title; // 親ページのタイトル
$_SESSION["parent_guid"]=$parent->guid; // 親ページのGuid
?>
<?php get_template_part(‘content-book_sort’); ?>
<?php $sort = $_SESSION["sort"]; ?>
<!– タブ切り替えインターフェース領域 –>
<div id="tabs">
<!– タブメニューリスト領域 –>
<ul>
<li><a href="#tab1">平成26年1学期</a></li>
<li><a href="#tab2">平成25年2学期</a></li>
<li><a href="#tab3">平成25年3学期</a></li>
</ul>
<!– タブコンテンツ領域1 –>
<div id="tab1">
<?php /* データ処理 */
// 抽出のための条件
$keyword = "ukeirebi BETWEEN ‘2014-03-31’ AND ‘2014-09-01’ $sort";
// データ数のカウント
$sql = "SELECT count(*) FROM wp_books WHERE $keyword";
$count = $wpdb->get_var($sql);
echo "抽出件数:".$count."<br />";
// データの抽出
$sql = "SELECT * FROM wp_books WHERE $keyword";
$posts = $wpdb->get_results($sql);
echo "SQL:"."SELECT * FROM wp_books WHERE ".$keyword;
$no="1";
?>
<div id="book_info" class="clearfix">
<div class="inner clearfix">
<ul>
<?php foreach($posts as $post): setup_postdata($post); ?>
<?php $_SESSION["book_id"]=$no; ?>
<?php get_template_part(‘content-book’); ?>
<?php $no++; ?>
<?php endforeach; ?>
</ul>
</div><!– end .inner clearfix –>
</div><!– end .book_info –>
</div><!– end #tab1 –>
<!– タブコンテンツ領域2 –>
<div id="tab2">
<?php /* データ処理 */
// 抽出のための条件
$keyword = "ukeirebi BETWEEN ‘2013-09-01’ AND ‘2013-12-31’ $sort";
// データ数のカウント
$sql = "SELECT count(*) FROM wp_books WHERE $keyword";
$count = $wpdb->get_var($sql);
echo "抽出件数:".$count."<br />";
// データの抽出
$sql = "SELECT * FROM wp_books WHERE $keyword";
$posts = $wpdb->get_results($sql);
echo "SQL:"."SELECT * FROM wp_books WHERE ".$keyword;
?>
<div id="book_info" class="clearfix">
<div class="inner clearfix">
<ul>
<?php foreach($posts as $post): setup_postdata($post); ?>
<?php $_SESSION["book_id"]=$no; ?>
<?php get_template_part(‘content-book’); ?>
<?php $no++; ?>
<?php endforeach; ?>
</ul>
</div><!– end .inner clearfix –>
</div><!– end .book_info –>
</div><!– end #tab2 –>
<!– タブコンテンツ領域3 –>
<div id="tab3">
<?php /* データ処理 */
// 抽出のための条件
$keyword = "ukeirebi BETWEEN ‘2014-01-01’ AND ‘2014-03-31’ $sort";
// データ数のカウント
$sql = "SELECT count(*) FROM wp_books WHERE $keyword";
$count = $wpdb->get_var($sql);
echo "抽出件数:".$count."<br />";
// データの抽出
$sql = "SELECT * FROM wp_books WHERE $keyword";
$posts = $wpdb->get_results($sql);
echo "SQL:"."SELECT * FROM wp_books WHERE ".$keyword;
?>
<div id="book_info" class="clearfix">
<div class="inner clearfix">
<ul>
<?php foreach($posts as $post): setup_postdata($post); ?>
<?php $_SESSION["book_id"]=$no; ?>
<?php get_template_part(‘content-book’); ?>
<?php $no++; ?>
<?php endforeach; ?>
</ul>
</div><!– end .inner clearfix –>
</div><!– end .book_info –>
</div><!– end #tab3 –>
</div><!– end #tabs –>
<?php get_template_part(‘page_top_link’); ?>
</div><!– end #content –>
<?php get_sidebar(page); ?>
</div><!– end #container –>
<?php get_footer(); ?>
[/php]
$post_typeの記事を抽出する関数
[php]
// $post_typeの記事を抽出する。
function fnc_read_post_type($post_type,$days) {
global $wpdb, $from, $offset, $per_page;
// $post_typeは必須: category または oshirase_cat
// $daysは3種類: allは全期間 空白はデフォルト 他はdays
if($days==’all’): $from=’0′;
elseif($days==”): $from = date("Y-m-d H:i:s", time() – 86400*90);
else: $from = date("Y-m-d H:i:s", time() – 86400*$days);
endif;
$obj = new stdClass;
$sql = <<< HERE
SELECT *
FROM $wpdb->posts
WHERE post_type = ‘$post_type’
AND post_status = ‘publish’
AND post_date >= ‘$from’
ORDER BY post_date DESC
LIMIT $offset, $per_page
HERE;
$obj = $wpdb->get_results($sql);
return $obj;
}
[/php]
$post_typeの記事数をカウントする関数
[php]
// $post_typeの記事数をカウントする。
function fnc_count_post_type($post_type,$days) {
global $wpdb,$from;
// $post_typeは必須: category または oshirase_cat
// $daysは3種類: allは全期間 空白はデフォルト 他はdays
if($days==’all’): $from=’0′;
elseif($days==”): $from = date("Y-m-d H:i:s", time() – 86400*90);
else: $from = date("Y-m-d H:i:s", time() – 86400*$days);
endif;
$sql = <<< HERE
SELECT COUNT(*) FROM $wpdb->posts
WHERE post_type = ‘$post_type’
AND post_status = ‘publish’
AND post_date >= ‘$from’
HERE;
$count = $wpdb->get_var($sql);
return $count;
}
[/php]