セキュリティで ほんとは esc_html とかエスケープしなと xss とかのたいしょうとなるらしい

http://www.warna.info/archives/2476/

わんばんこ。2012 WordPress アドベントカレンダーの3日目をむゆうさん( @anticyborg )と共に担当させていただきます。本当は、アドベントよりおべんt(以下略

WordPress で実現系のコードを紹介する記事は、よく目にしますし、セキュリティに関する関心も高いようですが、意外に基本的な所が抜け落ちているケースが多いように感じたので、テーマやプラグイン開発時に憶えておいて欲しい WordPress 関数、esc_html、esc_attr、esc_url について、つらつらと書いてみたいと思います。


この esc_ なんちゃらは、WordPress 2.8 から導入された関数で、それ以前のバージョンでは、wp_specialchars、attribute_escape、clean_urlと様々な名称であったものが、(おそらくは憶えやすいように)統一的な関数名に改名されたものです。Webには、様々な脆弱性を狙った攻撃方法がありますが、これらのエスケープ処理は、XSS を防ぐためのものですね。

WordPress のテンプレートタグで、そのまま表示を行うものの場合、エスケープなども含めて適切な処理をしてくれますが、カスタムフィールドの入力やURL、フォームなどから受け取る値の出力に関しては、必ずこれらの関数を用いておく必要があります。
特定の人のみしか入力しないから大丈夫とかいうのではなく、普段から表示するものにはエスケープ処理を加えるようにしておき、

Webサイト管理者によって完全に管理された内容であること
タグを使う必要性があるもの
である場合でのみ、エスケープを解除するように癖をつけておいた方が、うっかり抜けの少ない安全なWebにできます。(この場合でもstrip_tagsを用いて、特定のタグだけ許可した方がいいですね。)

特に昨今は、カスタムフィールドを用いて、表示する項目が多くなってきていますので要注意ですよ。

esc_html

Webページ上で表示する文字列に対し、タグとして認識される < > のエスケープや、& などの特殊文字のエンティティを行います。

適用例 1

1
<?php echo esc_html( get_post_meta( $post->ID, 'meta_key', true ) );
適用例 2

1
<?php echo esc_html( $_GET['key'] ); ?>
esc_attr

attr の名前が示すとおり、タグの属性値にかけるエスケープ関数です。でも、ソースコード読むと、esc_html とまったく一緒。でも、将来的に変わる可能性もあるので、ちゃんと使い分けましょうね。

適用例 1

1
<img src="" alt="<?php echo esc_attr( get_post_meta( $post->ID, 'img-alt', true ) ); ?>" />
適用例 2

1
<input type="text" name="form-name" value="<?php echo esc_attr( get_option( 'form-name', '' ) ); ?>" />
esc_url

urlとして不適切な文字列の削除やエンティティ化を行います。

適用例 1

1
<a href="<?php echo esc_url( get_post_meta( $post->ID, 'user_website', true ) ); ?>">Webサイト</a>
この他にも、javascriptのサニタイズを行う esc_js や、テキストエリアに用いる esc_textarea (し、知らなかった。)なんていうものもあるようです。

テンプレートで ファンクションを整理して メタタグなどを ファンクションで管理する方法

[WordPress] functions.phpを編集、修正、管理しやすくする書き方
http://millkeyweb.com/wp-functions-management/

まずこちらを参考にファンクションを整理

require_once locate_template('func/init.php');        // 初期設定の関数
require_once locate_template('func/cleanup.php');     // 不要なモノを削除する関数
require_once locate_template('func/titles.php');      // タイトル出力の関数
require_once locate_template('func/breadcrumbs.php'); // パンくずリストの関数
require_once locate_template('func/scripts.php');     // CSSやJavascript関連の関数
require_once locate_template('func/ads.php');         // 広告関連の関数
require_once locate_template('func/widgets.php');     // サイドバー、ウィジェットの関数
require_once locate_template('func/custom.php');      // その他カスタマイズの関数

require_once locate_template('func/plugin.php');      // プラグインの関数


require_once locate_template('func/d_header/disp.php');      // プラグインの関数

こんな感じでなにも入れない ちょくは

フォルダfuncにそれそれ作って 入れる

メタをファンクションで
meta descriptionを設定(プラグインなし版)
http://easyramble.com/wordpress-meta-description.html 参考
ベース

// get meta description from the content
function get_meta_description() {
  global $post;
  $description = "";
  if ( is_home() ) {
    // ホームでは、ブログの説明文を取得
    $description = get_bloginfo( 'description' );
  }
  elseif ( is_category() ) {
    // カテゴリーページでは、カテゴリーの説明文を取得
    $description = category_description();
  }
  elseif ( is_single() ) {
    if ($post->post_excerpt) {
      // 記事ページでは、記事本文から抜粋を取得
      $description = $post->post_excerpt;
    } else {
      // post_excerpt で取れない時は、自力で記事の冒頭100文字を抜粋して取得
      $description = strip_tags($post->post_content);
      $description = str_replace("\n", "", $description);
      $description = str_replace("\r", "", $description);
      $description = mb_substr($description, 0, 100) . "...";
    }
  } else {
    ;
  }

  return $description;
}

// echo meta description tag
function echo_meta_description_tag() {
  if ( is_home() || is_category() || is_single() ) {
    echo '<meta name="description" content="' . get_meta_description() . '" />' . "\n";
  }
}

屁だー

<?php echo_meta_description_tag(); ?>

自己

まず覚え発見

$disp = single_term_title( '' , false );//falseで出力せん

ドルに収納するときは
. ピリオドで繋げれる事

$description =  $disp . $disp_base . $disp_page;
$description =  $disp .' | '. $disp_base . $disp_page;

ページ数は

get_query_var('paged')

でとれるから
1ページ目は0がかえるから
そいつを覗いてページをいれる

$disp_page_no = get_query_var('paged') ;
  if($disp_page_no !== 0)
  {
	  $disp_page = ' | '.$disp_page_no . 'ページ目';
	  }

あとこの違い

$disp = get_the_author_meta( nickname, $author );//the_author_meta() は出力

カスタムポストタイプの場合 ラベルの単数系を使うことでメニューと混合しん
get post typeは戻り値がスラッグだで
get post type objectの中に入れてやることで投稿タイプの情報がとれる

<?php get_post_type_object( $post_type ); ?>

つまりラベルをとるには

<?php echo esc_html( get_post_type_object( get_post_type() )->labels->singular_name ); ?>

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_type_object 参考

タームがかぶる件は カテゴリは:カテゴリ タグは:タグ タクソノミーは:

同じ記事タイトルの件
ブログシングルでよくあった件だが 今回の設定ではディスプはコンテンツが入っているので 必要ない
タイトル+ベース文の場合おこる重複
※タイトルでは使う

//タイトルが同じ記事の場合-2とかスラッグにつくが、the_title wp_titleにはつかないのでディスプリクション・タイトルが重複するのを防ぐ
if (is_single() || is_page()){//シングルなら
$dd_title = urldecode ($slug_name = $post->post_name);// スラッグをデコードして取得
//echo $dd_title;
$keywords = preg_split("/[-]+/", $dd_title);//phpスプリット - にて
//print_r($keywords);
$last = end($keywords); //配列の最後を取得する ほにゃらら-2 ▶ $keywords[0]がほにゃらら $keywords[1]が2
//echo $last;
if (ctype_digit($last)) {//ケツが数字ならの分岐 
}
}
 //カスタムポストでは常時カスタムする  ラベルの単数系を使うことでメニューと混合しん
 //サンプル 
  elseif ( is_singular('sample') ) {
	  if (ctype_digit($last)) {//ケツが数字なら つまりタイトルが重複しているなら 
	  $title_no = '-'.$last; }//-数字を装弾

	$disp = get_the_title() . $title_no;
	 $d_post_type_label = ' | '.get_post_type_object( get_post_type() )->labels->singular_name;//ラベルを取得
	   $description =  $disp . $d_post_type_label .' | '. $disp_base;

結果

<?

// get meta description from the content
function get_meta_description() {
  global $post;
  $description = "";	
  
  //タイトルが同じ記事の場合-2とかスラッグにつくが、the_title wp_titleにはつかないのでディスプリクション・タイトルが重複するのを防ぐ
if (is_single() || is_page()){//シングルなら
$dd_title = urldecode ($slug_name = $post->post_name);// スラッグをデコードして取得
//echo $dd_title;
$keywords = preg_split("/[-]+/", $dd_title);//phpスプリット - にて
//print_r($keywords);
$last = end($keywords); //配列の最後を取得する ほにゃらら-2 ▶ $keywords[0]がほにゃらら $keywords[1]が2
//echo $last;
if (ctype_digit($last)) {//ケツが数字ならの分岐 
}
}


  $disp_page_no = get_query_var('paged') ;//ページナンバーを取得
  if($disp_page_no !== 0)
 		 {	$disp_page = ' | '.$disp_page_no . 'ページ目';	}//2ページ目以降装弾
  
  $disp_base = '春日井市で外構エクステリア工事(カーポート、ウッドデッキ、テラス、サンルーム、玄関、駐車場の工事など)なら春日井市神屋町にあるクリエイト福海へ!地域密着店ですので、些細な事もお気軽にご相談ください。愛知県全域御対応!見積り無料!';

// ホームでは、基本文
  if ( is_home() ) {
	  
    $description =  $disp_base
	//get_bloginfo( 'description' )
	;}
	
	 ///////------------------------アーカイブ------------------------ ///////
	
//カテゴリではターム名  + 基本文
	elseif ( is_category() ) {
		
	$disp = single_cat_title( '' , false );//falseで出力せん //single_term_titleでも同じ
	   $description =  $disp .' | カテゴリー' . $disp_page .' | '. $disp_base;
    //$description = category_description();
  }
  
//タクソノミーではターム名 + 基本文  
   elseif ( is_tax() ) {	
   
       $my_tax   = get_taxonomy( get_query_var( 'taxonomy' ));//タクソノミー情報を取得して
	$my_tax_label =' | '. $my_tax->labels->singular_name; //わかりやすくシングルラベルを使う
	
$disp = single_term_title( '' , false );
	   $description =  $disp . $my_tax_label . $disp_page.' | '. $disp_base;

  }
//タグではタグ名 + 基本文 
	elseif ( is_tag() ) {
		
	$disp = single_term_title( '' , false );
	   $description =  $disp  .' | タグ' . $disp_page .' | '. $disp_base;

  }
  
//月アーカイブでは年月 + 基本文  
  elseif ( is_month() ) {
	  	
	$disp = get_query_var('year') . '年' . get_query_var('monthnum') . '月の記事';
	   $description =  $disp . $disp_page .' | '. $disp_base;
 
  }
  
 //オーサーアーカイブではオーサー名 + 基本文
    elseif ( is_author() ) {
		
	$disp = get_the_author_meta( nickname, $author );//the_author_meta() は出力
	   $description =  $disp . ' さんの投稿 |' . $disp_page . $disp_base;
 
  }
  
  //ポストタイプアーカイブ カスタムポストのアーカイブ
  elseif(is_post_type_archive( 'sample' )){
//あれば
  }
  //ただのアーカイブ カテゴリー、タグ、投稿者または日時のいずれかに基づいて投稿を集めたページ
  //elseif(is_archive()){
	  
 // }
 ///////------------------------ページ------------------------ ///////
  
 //個ページではページタイトル + 基本文
      elseif ( is_page() ) {
	
	$disp = get_the_title();//
	   $description =  $disp . $disp_page .' | '. $disp_base;
 
  }
  
 ///////------------------------シングル------------------------ ///////
 
  //ブログシングル  
  elseif ( is_single() ) {
	//記事本文から抜粋を取得  
    if ($post->post_excerpt) {
 $description = $post->post_excerpt;
	  
	  // post_excerpt で取れない時は、自力で記事の冒頭100文字を抜粋して取得
    } else {
      
      $description = strip_tags($post->post_content);
      $description = str_replace("\n", "", $description);
      $description = str_replace("\r", "", $description);
      $description = mb_substr($description, 0, 100) . "...";
    }
  }
 ///////////////////////////ここからカスタム投稿タイプ それぞれ違うから注意!///////////////////////////////
 
 //カスタムポストでは常時カスタムする  ラベルの単数系を使うことでメニューと混合しん
 //サンプル 
  elseif ( is_singular('sample') ) {
	  if (ctype_digit($last)) {//ケツが数字なら つまりタイトルが重複しているなら 
	  $title_no = '-'.$last; }//-数字を装弾

	$disp = get_the_title() . $title_no;
	 $d_post_type_label = ' | '.get_post_type_object( get_post_type() )->labels->singular_name;//ラベルを取得
	   $description =  $disp . $d_post_type_label .' | '. $disp_base;
 
  }
 ////////春日井ナビ  ショップ
 elseif ( is_singular('shop') ) {
		
		  
  if($post-> お店からメッセージ見出し): 
  			$disp = str_replace(array("\r\n","\r","\n"), '', mb_substr(get_post_meta($post->ID,"お店からメッセージ見出し",true), 0, 120)) . str_replace(array("\r\n","\r","\n"), '', mb_substr(get_post_meta($post->ID,"お店からメッセージ",true), 0, 120));
   else: 	if($post-> 店舗紹介文){$disp = mb_substr(post_custom('店舗紹介文'), 0, 120);} 
   endif;
	  //if (ctype_digit($last)) {//ケツが数字なら つまりタイトルが重複しているなら 
	  //$title_no = '-'.$last; }//-数字を装弾

$disp_t = get_the_title() . ' | ';
$disp_site = ' | 春日井ナビ';
	// $d_post_type_label = ' | '.get_post_type_object( get_post_type() )->labels->singular_name;//ラベルを取得
	   $description =  $disp_t . $disp . $disp_site;
 
  }

  
  
 else {
    ;
  }
  

 
  return $description;
}
 
// echo meta description tag
function echo_meta_description_tag() {
  //if ( is_home() || is_category() || is_single() ) {
    echo '<meta name="description" content="' . get_meta_description() . '" />' . "\n";
  //}
}
		


?>

含みクリエイトフォーマットを スマホ専用サイトにする際のメモ マキノにも使えるか?

* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

足す

border-boxでおかしくなったところは

  -webkit-box-sizing: content-box;
     -moz-box-sizing: content-box;
          box-sizing: content-box;

で調整する

消す

/*点線消し含む
.d_navi_main_in ul li:hover{
	display: block;
	color: #00AF86;
	text-decoration: none;
	background-color: #00AF86;
	border-left-width: 1px;
	border-left-style: solid;
	border-left-color: #FFF;
	margin-left: -1px;
	border-top-width: 1px;
	border-bottom-width: 1px;
	border-top-style: solid;
	border-bottom-style: solid;
	border-top-color: #666;
	border-bottom-color: #666;
}
*/

contact form 7 で文字化け

その他記事の対処はして
差出人
名前<メルアド>

の部分が文字化けしてたやつ

バージョンをグレードダウンして
もだめだったから

名前<メルアド>
の名前の後に 半角スペースいれたらなおった

ワードプレスを初めてマルチサイト化してみた覚え1

まず、
wp-configに
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */よりまえ

/*マルチサイト機能実行*/
define ('WP_ALLOW_MULTISITE', true);

と追加して
管理画面にアクセス

ツール ネットワークにて表示されていたものを参考に

追記

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.d-marking.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

ほんでhtaccessの
wpでかいたるところ

##### マルチサイト設定
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>

こんでツール ネットワークで再度ログイン
するとまず入れる。

参考url
http://beam.co.jp/wordpress/1818最終ここ

http://webdesignerwork.jp/wordpress/multisite_blog/#01 二回目ここ

下記は古いかな?
http://kaibundou.com/blog/wordpress/sub-directory-multi-blog-wordpress3/
http://kaibundou.com/blog/wordpress/sub-directory-multi-blog-wordpress3/

しかし このままでは
今までのパーマーリンクに /blog/とかってについてしまうので

参考
http://kotori-blog.com/wordpress/permalink_custom/

親サイトの管理画面上の「設定」→「パーマリンク設定」から一旦パーマリンク設定をデフォルトにします。
ネットワーク管理者の管理画面から親サイトのパーマリンク設定を変更 設定タブ

Permalink Structure を /%postname%.html に

これでとりあえず いままで通りみれました。

そして
URLの書き方を買えなければならない

まずインクルードはこう
get_stylesheet_directory()

<?php include( get_stylesheet_directory() . '/includes/myfile.php'); ?>

パスを欲しい場合

URI を使う場合
<?php get_stylesheet_directory_uri(); ?>
URI を出力する場合
<?php echo get_stylesheet_directory_uri(); ?>

css
img
js
fontなど

ちなみに /d/

<?php echo get_stylesheet_directory_uri(); ?>/d/~/~

あと
リンクは
/から

<?php echo esc_url( home_url( '/' ) ); ?> ~

下記とある

「get_template_directory_uri()」を利用すると、カレントが子テーマであっても親テーマのパスを戻してくる。

Codex のドキュメントをよく読むと、子テーマが使われている場合は「get_stylesheet_directory_uri()」を使うようにとの事。時間を潰してしまった。

ところが暫くして、カレントテーマのディレクトリを取得する必要が生じた。これまた、「get_template_directory()」は親テーマのパスを戻すので、「get_stylesheet_directory()」を使わなければならない。ここでも、時間を潰してしまった。

で、ブログに備忘録として残しておこうかと。

情けない… orz

ファイルの置き場は
http://www.d-marking.jp/d-base/wp-content/uploads/sites/3/2016/03/saji_map_saishin-02.jpg

こうあった。

■インポート実験結果

上記でとりあえず空のサイトテーマファイルで
サイトが立ち上がるだろう

固定ページ
投稿
カスタム投稿
カスタムフィールド
カテゴリー・タグ
カスタムフィールド
タクソノミーは
インポートされていないため

すべて入れ込まなければならない。

手順

まずは標準インポート エクスポートでも若干は
移せるようだ

移せないものを最初に
オンまたはインポートしなければならない

■プラグイン
・カスタムフィールド系
Advanced Custom Fields
Custom Field Suite
Custom Post Type UI ※こいつは直でインポート エクスポートしなければならない
Smart Custom Fields
カスタムフィールドテンプレート

WordPress インポートツール

Contact Form 7

ここで課題は デフォルトプラグインを決めて それ以外は OFF にするでなく 消してリストだけ保存しておくとか。

・消したプラグイン

Bainternet Posts Creation Limits
BruteProtect
Crazy Lazy
DB Cache Reloaded Fix
Disable Ozh’s Admin Dropdown Menu.
Head Cleaner
Hello Dolly
Lazy Load
PS Disable Auto Formatting
Role Scoper
SyntaxHighlighter Evolved d-mrakで何かと被って memoでつかちょる
User Categories
http://www.warna.info/archives/1793/
WP-Members

親タームをカテゴリ枠化して小タームのターム名題と記事一覧のセットでフォーチ

TMプリントのボディーで使用

フォーチ2回まわす。
その中でループ

<?php


 ///宣言------------------------------------------
$args = array(
'parent'       => 0,
'hierarchical' => 0,
'orderby'      => 'term_order', // Category Order and Taxonomy Terms Order を使用
'order'        => 'ASC'
);
    $taxonomy_name = 'body_cat';
    $taxonomys = get_terms($taxonomy_name,$args);
    if(!is_wp_error($taxonomys) && count($taxonomys)):
        foreach($taxonomys as $taxonomy_term):////フォーチ----------------------------?>
         <h3 class="body_title2" style="margin-bottom:30px;"><?php echo $taxonomy_term->name;?><span class="d_price"></span></h3>
		
        <?php 
        $url = get_term_link($taxonomy_term->slug, $taxonomy_name);
		
		$taxonomy_term_childrens = get_term_children( $taxonomy_term->term_id, $taxonomy_name );
		 	if(!is_wp_error($taxonomy_term_childrens) && count($taxonomy_term_childrens)):
			 foreach($taxonomy_term_childrens as $taxonomy_term_children_id):
	$taxonomy_term_children = get_term_by('id',$taxonomy_term_children_id,$taxonomy_name);
	//echo $taxonomy_term_children_id	
?>



<h4 class="body_cat_child">
<?php
echo $taxonomy_term_children->name;
?>


</h4>

    
    
    <div class="body_box_all">
 <?php
$args = array(
		'posts_per_page' => -1,
//'orderby' => 'menu_order',
//'order' => 'ASC',
'tax_query' => array(
			'relation' => 'AND',
			array(
				'taxonomy' => $taxonomy_name,
				'field' => 'slug',
				'terms' => array( $taxonomy_term_children->slug ),
//'operator'=>'NOT IN'
				),
),
//カテ例 'cat'=> 4,
//カテ複数例	'cat'=> array(4,6)

	);
?>

<?php
	query_posts( $args );
?>   
<?php
if ( have_posts () ) :
    while ( have_posts() ) :
        the_post();
?>

<?php include("roop_body.php"); ?>


<?php
    endwhile;
endif;
?>



<?php wp_reset_query(); ?>



</div>

<!----->
<?php endforeach; endif; ?>
<?php endforeach; endif; ?>

d-making の 広告カテゴリ一覧 に新着NEWを 1ヶ月以内に 投稿された記事があれば

ポイントというか
ハマった点は
get post の
cat =>
ではタームID?
ゲットがテゴリーでとった id では
だめだめで

けっか
タックスクエリーをしなきゃいかんかった

<div class="disign_cate_box_all">

<?php
$cat_tax= 'd_cate_jirei';
$filed ='d_jirei_cat_img';
$args = array(
	'type'                     => 'post',
	'child_of'                 => 0,
	'parent'                   => 0,//0で親かてのみ ''で子もでる
	'orderby'                  => 'name',
	'order'                    => 'ASC',
	'hide_empty'               => 0,
	'hierarchical'             => 1,
	'exclude'                  => '',
	'include'                  => '',
	'number'                   => '',
	'taxonomy'                 => $cat_tax,
	'pad_counts'               => false ,
	'exclude' 				   => '321,322'
); 
$categories = get_categories($args);
//$categories = get_categories('parent=0'); 親カテゴリーのみ
foreach($categories as $category) :
 
$cat_id = $category->cat_ID;
$post_id = $cat_tax.'_'.$cat_id; 
   
$catimg = get_field($filed,$post_id);
$img = wp_get_attachment_image_src($catimg,W214_142);

$disp = get_field('d_jirei_cat_disp',$post_id);
$catekakaku1 = get_field('catekakaku1',$post_id);
$catekakaku2 = get_field('catekakaku2',$post_id);
$catekakaku3 = get_field('catekakaku3',$post_id);



?>



<div class="disign_cate_box">

<h3 class="disign_cate_box_title"><i class="icon-quote-left"></i><?php echo $category->cat_name; ?></h3>

			

 <div style="position:relative; margin-bottom:20px;">

<div class="disign_cate_box_img_box">
<div class="dcent">
<?php
// 1ヶ月以内に投稿された記事を取得して、あればNEWを出力する
$three_month_ago = date('Y-m-d 0:0:0', strtotime('-1 month'));//何ヶ月か?
$cat_current   = $category->slug; //現在のカテゴリID
$mydata = get_posts(
array(	'post_type' => 'd_jirei', 
    	'date_query' => array(
        	array(
        	'after'     => $three_month_ago,  //何ヶ月か
       		'inclusive' => true
       				), 
    							),
			'tax_query' => array(
			'relation' => 'AND',
			array(
				'taxonomy' => $cat_tax,
				'field' => 'slug',
				'terms' => $cat_current,
//'operator'=>'NOT IN'
				),
),
	)
);
?>
<?php  
if( !empty( $mydata ) ) {
	echo '<div class="new_icon"><img src="/img/new_icon/rainbow1.gif" width="31" height="12" alt="愛知県春日井市ホームページ制作NEW記事"></div>';
?>
	
<?php
}
wp_reset_postdata();
?>		
<a href="/デザイン事例カテゴリ/<?php echo $category->category_nicename; ?>" style="background-color:#FFF">
<img src="<?php if($img):
echo $img[0]; 
else:
echo '/img/no_photo_214_142.jpg';
endif;
 ?>" alt="<?php echo $category->cat_name; ?>" /></a></div></div>

<?php
 echo $disp
 ?>
<div style="clear:both;"></div>
<a href="/デザイン事例カテゴリ/<?php echo $category->category_nicename; ?>" class="d_cate_tuduki mailform_bottan">制作実績をみる</a>
</div>

<?php if($catekakaku1):?>
<table><caption>料金の目安</caption><tr><td><?php echo $catekakaku1; ?></td><td><?php echo $catekakaku2; ?></td></tr></table>
<?php endif; ?>
<div style="font-size:80%; padding:12px;">
<?php echo$catekakaku3; ?>
</div>
</div>


<?php endforeach; ?>
<div style="clear:both;"></div>





</div>




</div class="jirei_box_all">

http://notebook.yamamotohiroyuki.com/wordpress/2012/08/15/%E3%81%A1%E3%82%87%E3%81%84%E3%81%A1%E3%82%87%E3%81%84%E5%BF%98%E3%82%8C%E3%82%8B%E3%80%8Ewp_query%E3%80%8F%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/

<?php
$args = array(
  'cat' => 1,
  'posts_per_page' => 5
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
  while ( $the_query->have_posts() ) : $the_query->the_post();
endwhile;
  //ここにループするテンプレート
endif;
wp_reset_postdata();
?>

http://www.tam-tam.co.jp/tipsnote/cms/post6697.html

<?php
// 2015年9月10日から、2015年10月10日までに投稿された記事を取得して、タイトルを出力する
$mydata = get_posts( array(
	'posts_per_page' => -1,
	'date_query' => array(
		array(
			'after' => array(
				'year' => 2015,
				'month' => 9,
				'day' => 10,
			),
			'before' => array(
				'year' => 2015,
				'month' => 10,
				'day' => 10,
			),
			'inclusive' => true,
		),
	),
) );
if( !empty( $mydata ) ) {
	foreach( $mydata as $post ) {
		setup_postdata( $post );
?>
<h1><?php the_title(); ?></h1>
<?php
	}
}
?>

このへんとかは カテゴリ で ポストだったでよかったんだな

何ヶ月いないは
これ参考
http://bugpixel.net/output/web/date_query-wordpress/

<?php
$cats = get_the_category();
$cat = $cats[0];
$cat_current   = $cat->cat_ID; //現在のカテゴリID
?>
<?php
$three_month_ago = date('Y-m-d 0:0:0', strtotime('-3 month'));
$mydata = get_posts(array(
	'category'     => $cat_current,
    'date_query' => array(
        array(
        	'after'     => $three_month_ago,  //3ヶ月
        	'inclusive' => true
        ), 
    )
));
?>
<ul class="link">
<?php  
if( !empty( $mydata ) ) {
	foreach( $mydata as $post ) {
		setup_postdata( $post );
?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
	}
}
wp_reset_postdata();
?>       
</ul>    

レスポンシブル参考

画像 基本 画像の横幅をウインドウ幅に合わせたいが、原寸より大きくはしたくない場合
http://tips.nishishi.com/css/image-max-width.html

img {
   width: 100%; /* 横幅に合わせて自動で拡大縮小する */
}


img {
   max-width: 100%; /* 横幅に合わせて自動縮小するが、拡大はしない */
}

アスペクト比を固定したボックス要素
http://www.panarea-is.com/%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%A7%E3%82%82%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%A2%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E6%AF%94%E3%82%92/

.aspectwrapper {
position: relative;
width:50%;
background:#000000;
}
.aspectwrapper:after{
padding-top: 100%;
display: block;
content: “”;
}
.aspectwrapper > .content{
position: absolute;
top: 0px;
left: 0px;
bottom: 0px;
right: 0px;
}

スマホ対応するならCSSでword-wrap:break-wordを指定しよう

http://kudox.jp/html-css/word-wrap_break-word

{
  word-wrap:break-word;
}

したくない要素

{
  overflow:scroll;
  word-wrap:normal;
}

テーブル

table {
  table-layout:fixed;
}
うえのほうがいい感じ
table {
  word-break:break-all;
}
これだめ

記事ループで 何個目に 広告を入れる

<?php if (have_posts()) :$ransuu = rand(1, 5);
while (have_posts()) : the_post(); $loop_count++; ?>



<?php if ( $loop_count == $ransuu ) : ?>
 
<?php if(is_mobile()) { ?>
 
// ※ここにスマホ表示用のGoogle AdSense等の広告コードを入力
// ただしスマホ用なので横幅(width)は300px以下にすること
 
<?php } else { ?>
 
// ※ここにpc表示用のGoogle AdSense等の広告コードを入力
// pc用は横幅(width)は500px,高さ(height)は100px程度がおすすめ
 
<?php } ?>
<?php endif; ?>




<?php endwhile; else: ?>
  <p>記事がありません</p>
  <?php endif; ?>

レスポンシブ ギャラリー 強引なまとめ

<script type="text/javascript" src="/js/jquery.imageNavigation.js"></script>
<script type="text/javascript">
      $(function(){
        $("#img_box,#img_box2").imageNavigation({
          time:2000,
          animationTime:500,
          rolloverTime: 0,
          rolloutTime: 500,
		  autoPlay: false,
        });
      });
</script>


<script type="text/javascript">
$(window).on('load resize', function(){
var $w = ($('#img_box2 img.d-garabox').height());
$('.navi-image .d_respo_hight img').css("max-height", $w);
$('#img_box2 .navi-image a').css("max-height", $w);
//$('.viewer').height(w);
});
</script>
/*---------------------------------ギャラリー-------------------------------------------------*/
#img_box2 {
	width: 640px;
/*	margin-top: 20px;*/
	margin-right: auto;
	margin-bottom: 20px;
	margin-left: auto;
	overflow: hidden;
}
#img_box2 .navi-image {
	position: relative;
	height: 480px;
	width: 640px;
	overflow: hidden;
}
#img_box2 .navi-image a {
	position: absolute;
	left: 0px;
	top: 0px;
	background-color: #FFF;
	height: 480px;
	width: 640px;
	text-align: center;
	overflow: hidden;
	
	
	/*
	position: absolute;
	left: 0px;
	top: 0px;
	background-color: #FFF;
	height: 478px;
	width: 638px;
	text-align: center;
	overflow: hidden;
	border: 1px solid #FFF;*/
}
#img_box2 .navi-image a.last-active {
	z-index: 9;
}

#img_box2 .navi {
	overflow: hidden;
	padding-left:1%;
	padding-right:1%;
	-moz-box-sizing: border-box;
box-sizing: border-box;
margin-top:10px;
}



#img_box2 .navi-image a.active {
	z-index: 10;
}
#img_box2 .navi ul{
	margin: 0px;
	padding: 0px;
/*	width: 650px;*/
}
#img_box2 .navi ul li {
	float: left;
	list-style-type: none;
	padding: 0px;
	overflow: hidden;
	/*height:52px;*/
	width: 19%;
	position: relative;
	margin-top: 0px;
	margin-right: 2px;
	margin-bottom: 2px;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	
}

#img_box2 .navi ul li:after{
padding-top: 61.8%;
display: block;
content: "";
}
#img_box2 .navi ul li .img_navi{
position: absolute;
top: 0px;
left: 0px;
bottom: 0px;
right: 0px;
}


#img_box2 .navi ul li img{ width:100%; height:auto}
#img_box2 .navi-image a img{position: absolute;
    top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;}

#img_box2 .navi ul li a {
	margin: 0px;
	padding: 0px;
	display: block;
}


#img_box2, #img_box2 .navi-image, #img_box2 .navi-image a, #img_box2 .navi {
    width: 100%;
}

.d-garabox{ width: 100%;height: auto; }

#img_box2 .navi-image a img{ width:auto; max-width:100%; height:auto;}

/*ギャラリーメニュー アクティブとホバーくっきり*/	
#img_box2 .navi img {
  opacity: 0.4;
  filter: alpha(opacity=40);
  -ms-filter: "alpha(opacity=40)";
  -moz-opacity: 0.4;
  -khtml-opacity: 0.4;
  zoom: 1;
}

.navi .active > img
{
	opacity: 1!important;
	filter: alpha(opacity=100)!important;
	-ms-filter: "alpha(opacity=100)"!important;
	-moz-opacity: 1!important;
	-khtml-opacity: 1!important;
	zoom: 1!important;
	
	}


/*ディバイススマフォ*/
@media screen and (max-width: 490px){

/*--------------------------------------カーシングルスマフォ*/
#img_box2{ width:100%; height:auto;}

#img_box2 .navi-image{ width:100%; height:auto;/*max-height:300px; min-height:200px;*/}

#img_box2 .navi-image a{ width:100%; /*height:auto;*/}

#img_box2 .navi-image a img{ width:auto; height:auto;}

#img_box2 .navi{ width:100%; height:auto;}

#img_box2 .navi ul{ width:100%; height:auto;}





#img_box2 .navi ul li	{ width:24%}
/*初期のスマホギャラリーの高さ*/
.navi-image .d_respo_hight img,
#img_box2 .navi-image a{ max-height:251px;}


	
}
<div id="img_box2">
  

  <div class="navi-image">



 
   <?php
$fields = $cfs->get('shop_gallery');
foreach ($fields as $field) :
?>
<?php
$title= get_the_title();
 $attachment_id = $field['gallery_photo'];
?>


<a href="#" onClick="return false;" class="d_respo_hight">
<?php 
$car_photo = wp_get_attachment_image($attachment_id,'640_480',0,array('alt'=>$title,'title'=>$title));
echo $car_photo;
?>
</a>
<?php
endforeach;
?>
 
  <?php $hoge = get_field('car_label'); 
if($hoge == '店長おすすめ'): ?>
<div class="rabel_rabel">
<img src="/img/rable1_page.png" width="193" height="28" alt="店長おすすめ中古車">
</div>

<?php elseif($hoge == 'その他'): ?>


<?php endif; ?>


<?php //new
$days=30;
$today=date('U'); $entry=get_the_time('U');
$diff1=date('U',($today - $entry))/86400;
if ($days > $diff1) {
echo '
    <div class="rabel_new">
    <img src="/img/rable_new.png" width="54" height="54" alt="新着中古車">
    </div>
	';
}
?>

  <?php //公開状態
   $hoge = get_field('car_open'); 
if($hoge == '10'): 
 //商談中
?>   
    <div class="rabel_status">
    <img src="/img/rabel_shoudan_page.png" width="198" height="41" alt="この中古車は商談中です。">
    </div>
 <?php elseif($hoge == '1'): 
  //売り切れ?>   
    <div class="rabel_status">
    <img src="/img/rabel_sold_out_page.png" width="640" height="480" alt="この中古車は完売しました。" class="d-garabox">
    </div>
<?php endif; ?> 

<img src="/img/d-garabox_back.png" class="d-garabox">



  </div>
  
  <div class="navi">
<ul>


   <?php
$fields = $cfs->get('shop_gallery');
foreach ($fields as $field) :
?>
<?php
$title= get_the_title();
 $attachment_id = $field['gallery_photo'];
?>


<li><p class="img_navi"><a href="#" onClick="return false;">
<?php 
$car_photo = wp_get_attachment_image($attachment_id,'140_93',0,array('alt'=>$title,'title'=>$title));
echo $car_photo;
?>
</a></p></li>
<?php
endforeach;
?>


    </ul>
  </div>
  <div style="clear:both;"></div>
  
  


  </div id="img_box2">

クリッカブルのレスポンシブ

<!--レスポンクリッカブル--->
<script type="text/javascript" src="/js/jquery.rwdImageMaps.min.js"></script>

<script type="text/javascript">
$(document).ready(function(e) {
	$('img[usemap]').rwdImageMaps();
});
</script>
.d_mapbox2{margin-bottom:30px; width:100%;position:relative; display:none}

.d_mapbox2 img[usemap] {
		border: none;
		height: auto;
		max-width: 100%;
		width: auto;
	}

ブート

@media (max-width: 768px) {
.d_mapbox{ display:none}
.d_mapbox2{ display: block}
}
<div class="d_mapbox2" > <img src="/img/test.png" usemap="#resp" id="#resp" width="730" height="385" alt="春日井mapメニュー"/>
            <map name="resp">
              <area shape="rect" coords="486, 195, 562, 250" href="/お店/地区/岩成台/" />
              <area shape="rect" coords="486, 139, 562, 194" href="/お店/地区/藤山台/"/>
              <area shape="rect" coords="620, 79, 703, 327" href="/お店/地区/石尾台/"/>
              <area shape="poly" coords="619, 310, 450, 311, 450, 181, 486, 181, 486, 250, 562, 250, 562, 233, 620, 233" href="/お店/地区/高蔵寺/"/>
              <area shape="poly" coords="618, 231, 621, 75, 545, 75, 545, 139, 564, 139, 564, 235, 618, 235, 615, 234" href="/お店/地区/高森台/" />
              <area shape="poly" coords="450, 7, 450, 182, 486, 182, 486, 139, 546, 139, 546, 75, 622, 75, 622, 5" href="/お店/地区/坂下/" />
              <area shape="poly" coords="450, 317, 314, 317, 314, 293, 342, 293, 342, 168, 450, 168"href="/お店/地区/南城/"/>
              <area shape="poly" coords="260, 79, 450, 78, 450, 169, 342, 169, 342, 183, 260, 183" href="/お店/地区/松原/" />
              <area shape="rect" coords="260, 182, 342, 299"  href="/お店/地区/東部/"  />
              <area shape="rect" coords="176, 9, 260, 167"  href="/お店/地区/鷹来/"  />
              <area shape="rect" coords="176, 167, 260, 295"  href="/お店/地区/柏原/"  />
              <area shape="rect" coords="24, 204, 77, 312"  href="/お店/地区/味美/"  />
              <area shape="rect" coords="74, 42, 176, 205"  href="/お店/地区/西部/" />
              <area shape="rect" coords="77, 204, 133, 353" href="/お店/地区/知多/"  />
              <area shape="poly" coords="133, 204, 133, 353, 317, 353, 317, 294, 176, 295, 176, 204" href="/お店/地区/中部/"/>
            </map>
            <!--城北線-->
            <a class="eki jyouhoku map_jyouhoku_ajiyoshi" href="/お店/最寄り駅/味美駅/城北線/#"> 味美駅</a> <a class="eki jyouhoku map_jyouhoku_kachigawa" href="/お店/最寄り駅/勝川駅/城北線/"> 勝川駅</a>
            <!--名鉄-->
            <a class="eki meitetsu map_meitetsu_ajima" href="/お店/最寄り駅/味鋺駅/名鉄/"> 味鋺駅</a> <a class="eki meitetsu map_meitetsu_ajiyoshi" href="/お店/最寄り駅/味美駅/名鉄/"> 味美駅</a> <a class="eki meitetsu map_meitetsu_kasugai" href="/お店/最寄り駅/春日井駅/名鉄/"> 春日井駅</a> <a class="eki meitetsu map_meitetsu_ushiyama" href="/お店/最寄り駅/牛山駅/名鉄/"> 牛山駅</a>
            <!--JR-->
            <a class="eki jr map_jr_kachigawa" href="/お店/最寄り駅/勝川駅/jr/"> JR 勝川駅</a> <a class="eki jr map_jr_kasugai" href="/お店/最寄り駅/春日井駅/jr/"> JR 春日井駅</a> <a class="eki jr map_jr_jinryo" href="/お店/最寄り駅/神領駅/jr/"> JR 神領駅</a> <a class="eki jr map_jr_kouzouji" href="/お店/最寄り駅/高蔵寺駅/jr/"> JR 高蔵寺駅</a> <a class="eki jr map_jr_jyoukouji" href="/お店/最寄り駅/定光寺駅/jr/"> JR 定光寺駅</a>
            <!--春日井市以外-->
            <a class="map_komaki" href="/お店/地区/小牧市/"> 小牧市</a> <a class="map_inuyama" href="/お店/地区/犬山市/"> 犬山市</a>
            <div class="eki_setumei">
              <div class="setumei se1">JR中央本線</div>
              <div class="setumei se2">名鉄小牧線</div>
              <div class="setumei se3">東海交通事業 城北線</div>
            </div>
            <div class="chiiki_setumei"> (中学校区別) </div>
          </div>

結果 ちいさすぎてつかわん

タクソノミーをドロップダウンでリンク 複数設置

<script type="text/javascript">
function sample() {
  var browser = document.fm.s.value;
  location.href = browser;
}
</script> 
<form id="dp_cat" action="#" name="fm">
<select name="s" onChange="sample()">

<option value="">月を選択</option>
<?php
$argv = array(
'orderby' => 'order', // PS Taxonomy Expander
);
$terms = get_terms('ciku', $argv);
foreach($terms as $value): 
echo "<option value=\"/お店/地区/".$value->slug."/\">".$value->name."</option>";
endforeach;
?> 
</select>
</form>

<script type="text/javascript">
function sample2() {
  var browser2 = document.fm2.s2.value;
  location.href = browser2;
}
</script> 
<form id="dp_cat2" action="#" name="fm2">
<select name="s2" onChange="sample2()">

<option value="">月を選択</option>
<?php
$argv = array(
'orderby' => 'order', // PS Taxonomy Expander
);
$terms = get_terms('nearest_station', $argv);
foreach($terms as $value): 
echo "<option value=\"/お店/最寄り駅/".$value->slug."/\">".$value->name."</option>";
endforeach;
?> 
</select>
</form>

参考

http://blife.boo.jp/643/

<script type=”text/javascript”>
function sample() {
  var browser = document.fm.s.value;
  location.href = browser;
}
</script> 
<form id=”dp_cat” action=”#” name=”fm”>
<select name=”s” onChange=”sample()”>
<?php
$argv = array(
‘orderby’ => ‘order’, // PS Taxonomy Expander
);
$terms = get_terms(‘dptopics_category’, $argv);
foreach($terms as $value): 
echo “<option value=\””.WWW_URL.”dptopics/”.$value->taxonomy.”/”.$value->slug.”/\”>”.$value->name.”</option>”;
endforeach;
?> 
</select>
</form>

お気にに入れたが
検索を使って 複数条件でタクソノミー を 検索

http://satohmsys.info/wordpress-searchbox-dropdown/
zip保存
アーカイブ

カレンダープラグインで URL先を JSで置き換えたメモ

結果

<script type="text/javascript">
$(document).ready(function() {
$(".monthly-calendar a").each(function() { //.eachは合致
var dreplace = null;//初期化
var dreplace = $(this).attr('href').replace(/%e7%8f%be%e5%a0%b4%e8%a6%8b%e5%ad%a6%e4%bc%9a/g,'予約カレンダー');
$(this).attr('href',dreplace);
});
});

</script>

カレンダーを入れる部分にショートコードを入れて

ページ最下部に

だと、カレンダーをクリックした先
また、同じページになってしまう。

その先をスライダーやコンテンツなどは一切読み込ませずに
新しいページで表示

カレンダー = コンテンツ下
クリック先 = 固定ページ

ブログなどのカレンダーTOPページのヘッダーに上記スクリプト

固定ページで同じショートコードでページ作成

<script type="text/javascript">
$(document).ready(function() {
$(".monthly-calendar a").each(function() { //.eachは合致
var dreplace = null;//初期化
var dreplace = $(this).attr('href').replace(/ここに元のページのURLを入れる%e7%8f%be%e5%a0%b4%e8%a6%8b%e5%ad%a6%e4%bc%9aここまで/g,'移管先URL=予約カレンダー');
$(this).attr('href',dreplace);
});
});

</script>

テンプレで
サイドバーに入れたバナーと
予約ボタンの
css 

.genba_kengaku{
	border: 1px solid #CCC;
	display: block;
	text-align: center;
}

.kengaku_title{
	font-weight: bold;
	padding-top: 12px;
	padding-right: 5px;
	padding-bottom: 12px;
	padding-left: 5px;
}
button[type="submit"]{ font-size:18px;}
<a href="/現場見学会/" class="genba_kengaku" style="margin-bottom:0px; margin-top:12px;">
<img src="/img/side_open_house.jpg" width="214" height="129" alt="名古屋市昭和区 新築完成現場見学会"/><div class="kengaku_title">
完成見学会ご予約フォーム<br />
<span style="font-size:80%; font-weight:normal">名古屋市昭和区 3月4日まで</span></div>
</a>

参考

http://www.db.gs/article/402042301.html

http://qiita.com/ma_me/items/9d2a72df209ae9832a3f

http://semooh.jp/jquery/api/core/each/callback/

http://www.webantena.net/javascriptjquery/jquery-replace/

http://www.webantena.net/javascriptjquery/jquery-replace-multiple-words/

正規表現リンク集

正規表現 メタ文字一覧
http://www.megasoft.co.jp/mifes/seiki/meta.html

サルにもわかる正規表現入門
http://www.mnet.ne.jp/~nakama/

正規表現の構文
https://msdn.microsoft.com/ja-jp/library/ae5bf541(v=vs.90).aspx

The GNU Awk User’s Guide – 正規表現
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_5.html

likeboxもといpage plugin facebook ウィジェットのレスポンシブ

	.fb_iframe_widget{ width:100%}

.fb_iframe_widget iframe{ width:100%}
<div class="fb-page" data-href="https://www.facebook.com/0568navi/" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="true" data-width="500" ></div>

https://developers.facebook.com/docs/plugins/page-plugin