中古車販売 まとめ2

結局ブログのYARPPはやめて
車で出したかったので
ステータスをタクソノミーに変更

変更方法は
アドバンスでcar_openに作ったタクソノミーを割り当てる。
返り値はID
IDは順に数値がおおきくなるため、
販売受付中
SOLDOUTと順につくれば

並び順は
ASC となる。

真ん中に新しい項目 交渉中など入れたい場合は
SOLD OUTを一度消して、 
作り直す必要が出てくるので
注意

<?php //公開状態
   $hoge = get_field('car_open'); 
if($hoge == '10'): 
 elseif($hoge == '189'): 
?>

という表示方法
IDに変えただけ

ファンクションの
メインクエリは

				$meta_query = array(
            'relation' => 'AND', //meta_queryの配列が1つの時は指定しない
            'meta_sort1' => array(
                 'key' => 'car_open', //キー
                'type' => 'NUMERIC', //タイプ 数字
            ),
            'meta_sort2' => array(
                 'key' => 'car_cc', //キー
                'type' => 'NUMERIC',   //値のタイプ 数字
            ));
			$orderby = array(
            'meta_sort1' => 'ASC',
             'meta_sort2' => 'ASC',
               //            'date' => 'DESC'
       		 );
        	$query->set('meta_query', $meta_query);
        	$query->set('orderby', $orderby);

結局  ‘meta_sort1’ => ‘ASC’,にへんこうしただけ

yarpp 直書きの場合はタクスとかないとエラーで表示されないからきお

http://blog.k-kansei.com/?p=728
http://www.ex-tra.jp/kosukekato/archives/15420

オプション

yarpp_related(array(
    // Pool options: these determine the "pool" of entities which are considered
    'post_type' => array('post', 'page', ...),
    'show_pass_post' => false, // show password-protected posts
    'past_only' => false, // show only posts which were published before the reference post
    'exclude' => array(), // a list of term_taxonomy_ids. entities with any of these terms will be excluded from consideration.
    'recent' => false, // to limit to entries published recently, set to something like '15 day', '20 week', or '12 month'.
    // Relatedness options: these determine how "relatedness" is computed
    // Weights are used to construct the "match score" between candidates and the reference post
    'weight' => array(
        'body' => 1,
        'title' => 2, // larger weights mean this criteria will be weighted more heavily
        'tax' => array(
            'post_tag' => 1,
            ... // put any taxonomies you want to consider here with their weights
        )
    ),
    // Specify taxonomies and a number here to require that a certain number be shared:
    'require_tax' => array(
        'post_tag' => 1 // for example, this requires all results to have at least one 'post_tag' in common.
    ),
    // The threshold which must be met by the "match score"
    'threshold' => 5,

    // Display options:
    'template' => , // either the name of a file in your active theme or the boolean false to use the builtin template
    'limit' => 5, // maximum number of results
    'order' => 'score DESC'
),
$reference_ID, // second argument: (optional) the post ID. If not included, it will use the current post.
true); // third argument: (optional) true to echo the HTML block; false to return it

メーカーが更新後トヨタにもどってしまう(何も選択されない)は
その他のアドバンスカスタムで分岐条件でつかっていたからかもしれない

そこをcarにインサートされないようにしたら治った。

中古車販売 まとめ

まず、soldout は今回カスタムフィールドのセレクトボックスで
20 : 販売受付中
1 : SOLD OUT
でやった。

YARPPを使いたい場合は
売り切れを表示する 一覧で最後に表示する
http://www.memo.d-marking.com/blog/2015/10/31/%E5%A3%B2%E3%82%8A%E5%88%87%E3%82%8C%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%80%80%E4%B8%80%E8%A6%A7%E3%81%A7%E6%9C%80%E5%BE%8C%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/
を参考に。
soldoutをタクソノミーで作成し、
yarppで 売り切れを除外できる。
並び替え等のファクションのクエリがみなへんこうとなるので注意
車はソートして見る事が基本でカーセンサーとかも関連時事なかったので
今回はなし。

並び替えの際に、たくすクエリで下記とした。

elseif ( $sortset == 'car_pay_money_low' ) { //総支払い価格安い 実際使わない
	
			$meta_query = array(
            'relation' => 'AND', //meta_queryの配列が1つの時は指定しない
            'meta_sort1' => array(
                 'key' => 'car_open', //キー
                'type' => 'NUMERIC', //値のタイプ 数字
            ),
            'meta_sort2' => array(
                 'key' => 'car_pay_money', //キー
                'type' => 'NUMERIC',   //値のタイプ 数字
				'value'=>'1', //ask設定
				'compare'=>'>=', //総額1以上を表示
            ));
			$orderby = array(
            'meta_sort1' => 'DESC',
             'meta_sort2' => 'ASC',
               //            'date' => 'DESC'
       		 );
        	$query->set('meta_query', $meta_query);
        	$query->set('orderby', $orderby);
        	} 

通常の一覧部も

// サーチ ページ数
    if ( $query->is_search() && $query->is_main_query() ) {
$query->set('posts_per_page', 12 );
 $query->set( 'meta_key', 'car_open' );
 $query->set( 'orderby', 'meta_value_num' );
 $query->set( 'order', 'DESC' ); //数値が低い順
  }
  
  //アーカイブページ数	
  if ( $query-> is_tax() && $query->is_main_query() ) {
$query->set('posts_per_page', 12 );
$query->set( 'meta_key', 'car_open' );
$query->set( 'orderby',array('meta_value_num' => 'DESC', 'date' => 'DESC') );
  }

とした。car_open

ちなみに総額の部分は空欄だとaskでそうすると数値が入ってこないから
ソートで総額の時 最も安いがaskから出るので
上記総額ソートはやめて 車体価格のソートのみに
車体価格を目立たせた

タクソノミーにコメントアウトしてあるから
ファぬションにもうかいてあるので
必要があれば表示すれば並び替わる

タクソノミーは
タクソノミーページで分岐して
まんま 他のタクソノミーを誘導するのをはじめてやった

ギャラリーは
car で ギャラリーで 色々
http://www.memo.d-marking.com/blog/2017/05/11/car-%E3%81%A7%E3%80%80%E3%82%AE%E3%83%A3%E3%83%A9%E3%83%AA%E3%83%BC%E3%81%A7%E3%80%80%E8%89%B2%E3%80%85/

参考
高さをほぼ固定することで決まった。

絞込は
サイドバーでリストカテゴリにて
(タクソノミーを使って カテゴリ1=メーカー カテゴリ2=車両タイプ カテゴリ3=詳細項目として、管理画面から追加並びかえでき、クライアントによっては例えばロードスター専門店の場合 ほぼロードスターなので メーカーを年式 などに カテゴリ2までは自由に変更。詳細項目はシングルにも使ってるので統一 つまり2個のカテゴリは自由に変更
※タクソノミーでやってる場合は 絞り込み検索が自分でできるっぽい。これは後の課題)

http://kotori-blog.com/wordpress/refinement_search/
詳細項目で検索のみ
ドロップダウンで すぐ検索するやつ

<div class="car_serch_title_side" style="margin-top:24px;">
   詳細項目で選ぶ
    </div>
        
<div style="padding-top:20px;"></div>
<ul class="car_side_menu">



<?php $cats = get_categories(array(
'post_type' => 'car',
'taxonomy' => 'car_cat3' ,
'hide_empty' => 0 ,//記事がなくとも表示
'depth' => 1,//子は表示しません。
'orderby' => 'order',//順番は指定します
)); ?>
<?php if(!empty($cats)): ?>
<select name="cat" id="cat">
<option value=" "> 詳細項目で選ぶ</option>
<?php  foreach($cats as $cat): ?>
<option value="<?php $cat_term = $cat->slug; echo get_term_link($cat_term ,'car_cat3'); ?>"><?php echo $cat->cat_name; ?>(<?php echo $cat->count; ?>)</option>
<?php endforeach; ?>
</select>

<script type="text/javascript">
var dropdown = document.getElementById("cat");
function onCatChange(){
    if(dropdown.options[dropdown.selectedIndex].value != ""){
        location.href = dropdown.options[dropdown.selectedIndex].value;
    }
}
dropdown.onchange = onCatChange;
</script>
<?php endif; ?>

</ul>

お気に入りプラグは ログインしてると、まだありませんが表示されないっぽい。

Duplicate Post は設定画面からカスタムポストも選べるが
カスタムフィールドスイートを使ってると
ループフィールド=今回はギャラリーのサムネイルに使ってるフォーチせずに1個目の画像 が前のものになるようなので
複製しないカスタムフィールドを指定すること

検索boxは

  <div class="car_serch_page_side" style="margin-top:30px;">
    
<div class="car_serch_title_side">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/d/img/car/side_serch.png" width="96" height="25" />
</div>
<div class="search_box">
<form role="search" method="get" id="searchform" action="/" >
<input type="text" value="<?php the_search_query(); ?>" name="s" class="s" />
<input type="hidden" name="post_type" value="car">
<input type="submit" class="searchsubmit" value="" />
</form>
</div>
</div>

とした。

value="<?php the_search_query(); ?>"

とすると、検索後も検索ワードが検索ボックスに入ったままになる

is_main_query で meta_query を使う

複数 meta_key の指定

http://qiita.com/harapeko_wktk/items/4fe7d39ad22d3951e5cc

elseif ( $sortset == 'car_price_high' ) { //価格高い
			 $meta_query = array(
            'relation' => 'AND', //meta_queryの配列が1つの時は指定しない
            'meta_sort_parent_id' => array(
                 'key' => 'car_open', //カスタムフィールドのキー
                'type' => 'NUMERIC',     //カスタムフィールドの値のタイプ
            ),
            'meta_sort_child_id' => array(
                 'key' => 'car_price', //カスタムフィールドのキー
                'type' => 'NUMERIC',       //カスタムフィールドの値のタイプ
            )
        );

  $orderby = array(
            'meta_sort_parent_id' => 'DESC',
             'meta_sort_child_id' => 'DESC',
               //            'date' => 'DESC'
        );
        $query->set('meta_query', $meta_query);
        $query->set('orderby', $orderby);
        } 
		

だがけっきょく、 使わない買った
いや使った

結局、価格でソートなど
その前に売り切れで分岐したい場合
2個使いました。

car で ギャラリーで 色々

まず カーのギャラリーで たてよこ の画像の対応

まず 新しく
画像 高さ 中心 のcss

これほんと? って感じですごいけど

http://coliss.com/articles/build-websites/operation/css/css-vertical-align-anything-by-sebastian.html

.demo p {
  position: relative;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
}

スクリーンショット 2017-05-11 16.31.49

そんで ギャラリーに使ってる画像 ファンクション

		//carサムネイル使用
			 'car_thum' => array(
            'name'       => 'car_thum', // 選択肢のラベル名
            'width'      => 360,    // 最大画像幅
            'height'     => 270,    // 最大画像高さ
            'crop'       => true,  // 切り抜きを行うかどうか
            'selectable' => false // 選択肢に含めるかどうか
        ),
					//carサムネイル使用
			 'car_big' => array(
            'name'       => 'car_big', // 選択肢のラベル名
            'width'      => 784,    // 最大画像幅
            'height'     => 588,    // 最大画像高さ
            'crop'       => false,  // 切り抜きを行うかどうか
            'selectable' => false // 選択肢に含めるかどうか
        ),

新たに足したcss

.flickSlider .flickView ul li img.car_big {
    width: auto;
	max-height:588px;
	  position: relative;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
}

@media screen and (max-width: 736px) {
	
	.flickSlider .flickView ul li img.car_big {
   width: auto;
   max-width:100%;
	max-height:262px;
}
}

幅100%にせずに、 サムネイル切り抜きの幅を 100%のサイズで数字指定
高さもサムネイル切り抜きの数字指定。

ただし、ギャラリーが1個めの画像の高さを取得して高さを出してくるので
1こめが小さい画像だと、高さが 高いやつが隠れてしまう。 なので、
1個めが小さい画像だった場合、高さが低いやつだった場合、その高さを取得して、
マックスハイトを変更してやることにした。

それがflickSliderに書いた
最後の方のコード

・・・
	var $w = ($('.flickSlider .flickView ul li').height());
$('.flickSlider .flickView ul li img.car_big').css("max-height", $w);

    });
});

これ同じオンロードに入れてやって最後に処理させることで辻褄が合うのでここで、。

但し、今思ったが、 1個目の画像の高さを取得した時 すんごい小さい場合、全部スのサイズになってしまうよね、。そんなやつおらんか?
なので、
スマホ PCで もう高さ指定したほうがいいんかな?

上記だと上手く動作していなかったみたいだで 高さ取得して変更するのやめた
(JSないでなく シングルの最後にいれると、ギャラリーが表示されんことあるもんでたまに)

やっぱこうした

/*一応最小のギャラリーの高さを出しておく*/
.flickSlider .flickView,.flickSlider .flickView ul,.flickSlider .flickView ul li{
	min-height:500px;
	}

.flickSlider .flickView ul li img.car_big {
    width: auto;
	max-height:588px;
	  position: relative;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
}

@media screen and (max-width: 736px) {
	
	/*一応最小のギャラリーの高さを出しておく*/
.flickSlider .flickView,.flickSlider .flickView ul,.flickSlider .flickView ul li{
	min-height:200px;
	}

	
	.flickSlider .flickView ul li img.car_big {
   width: auto;
   max-width:100%;
	max-height:262px;
}
}

get_the_categoryで特定のカテゴリを除外するコードの書き方

https://ja.wordpress.org/support/topic/get_the_category%E3%81%A7%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%82%92%E9%99%A4%E5%A4%96%E3%81%99%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9/

 

function my_get_the_category( $id = false, $exclude = array() ) {
	$cats = get_the_category( $id );
	$excluded_cats = array();
	foreach( $cats as $cat ) {
		if ( !in_array( $cat->cat_ID, $exclude ) ) {
			$excluded_cats[] = $cat;
		}
	}
	return $excluded_cats;
}
<?php
	$category = my_get_the_category(false, array(1, 2));
	$cat_id   = $category[0]->cat_ID;
	$cat_name = $category[0]->cat_name;
	$cat_slug = $category[0]->category_nicename;
?>

上記のみでは 小カテゴリは表示されてしまうので
追加記入

<?php //カテゴリでインフォメーションとインフォメーションの子カテゴリのチェックがあってもそれをアイコンに表示させない
$taxonomy_name = 'category';
$termchildren = get_term_children( $info_cat, $taxonomy_name );//インフォカテの小カテをすべて取得
array_push($termchildren, $info_cat);//取得したものにインフォカテを追加
?>

<?php $cat = my_get_the_category(false, $termchildren );//ファンクション独自関数
if(empty($cat)){$cat = get_the_category();}//もしインフォカテゴリのみ場合 普通にget_the_categoryでインフォメーションを取得
 $cat = $cat[0]; { echo $cat->cat_name; } ?>