HTML,CSS,PHP,ワードプレスカスタマイズ 技術情報資料

WelCart カテゴリーページで並び替える

スポンサーリンク

WelCart カテゴリーページで並び替えた方法です。
いくら探しても「安い順」とか「高い順とか」で並び替える方法がない!
meta_value meta_key って技があるらしいけど、動かせなかった。
ちなみに meta_key にフィールドを増やすには function.php に以下を追加。
/* メタキー追加 */
add_filter('query_vars', 'myz_query_vars', 9);
function myz_query_vars(  $qvars ){
	$qvars[] = 'meta_key';
	return $qvars;
}
あとは、 myz_query_vars(“なんとか”); って呼び出してあげると、meta_key のフィールドが増やせる。
なんに使うか? 引数を追加するときに使う。
下は、price ってフィールドをキーに追加した例。つまり、 add_query_arg を使いときに使用する。
<a href="<?php echo add_query_arg(array('catrgory'=>'$cat','orderby'=>'meta_value','meta_key'=>'price','order'=>'DESC')); ?>">高額順</a>
 

WelCart カテゴリーページで並び替える

で、以下が力技のカテゴリーページでの並び替え。 おりじなるを保存しているので if(1==1) なんてことをやっているので、それはとっぱらってください。
このブログまで来たってことはかなり苦しんだものと思います。ご苦労様です。一助になれば・・・(-人-
category.php を以下のように書き換えた。
<?php
get_header();
?>


<article>

<section>
<h3 class="contents-title">

<?php
if ($cat_data['h3']) { ?>
  <?php echo esc_html($cat_data['h3']) ?>
<?php } else { ?>
  <?php single_cat_title(); ?>
<?php }; ?>
</h3>

$debug_mode=1;
	//--------------------------------------------------------------------------
if ($debug_mode==1) {
	//--------------------------------------------------------------------------
// ----- ここから味噌 ---
global $wpdb, $usces;
$cat = get_the_category();
$cat = $cat[0];
$cat_data = get_option('cat_'.intval($cat -> cat_ID));
<?php $cat_now = get_query_var('cat'); ?>
<div align="right" style="margin:10px;"
<form name="irekae" method="get" id="sort_form5" class="sort_form5">
<select name='narabi' onChange="document.forms['irekae'].submit()" >
<option value="sort1"<?php if(!isset($_REQUEST['narabi']) || $_REQUEST['narabi'] == 'sort1') echo ' selected="selected"';?>>新しい順</option>
<option value="sort2"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort2') echo ' selected="selected"';?>>古い順</option>
<option value="sort3"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort3') echo ' selected="selected"';?>>価格:安い順</option>
<option value="sort4"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort4') echo ' selected="selected"';?>>価格:高い順</option>
<option value="sort5"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort5') echo ' selected="selected"';?>>ランダム</option>
<option value="sort6"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort6') echo ' selected="selected"';?>>全商品一覧</option>
</select>
</form>
</div>
<?php $cat_now = get_query_var('cat'); ?>
<?php $sortset = $_GET['narabi']; ?>
<?php $sortall = array(
  "sort1" => 'cat='.$cat_now.'&orderby=modified&order=DESC',
  "sort2" => 'cat='.$cat_now.'&orderby=modified&order=ASC',
  "sort3" => 'cat='.$cat_now.'&orderby=meta_value&meta_key=price&order=ASC',
  "sort4" => 'cat='.$cat_now.'&orderby=meta_value&meta_key=price&order=DESC',
  "sort5" => 'cat='.$cat_now.'&orderby=rand',
  "sort6" => 'cat='.$cat_now.'&showposts=-1&order=asc',
  "sort7" => 'cat='.$cat_now.'&orderby=title&order=DESC',
  "sort8" => 'cat='.$cat_now.'&orderby=title&order=asc'
);
	if($sortset != '') {
		if(      $sortset == 'sort3') {
			$query_string= $sortall["sort1"];
		}elseif($sortset == 'sort4') {
			$query_string= $sortall["sort1"];
		}else{
			$query_string= $sortall[$sortset];
		}
	} else {
		$query_string= $sortall["sort1"];
	}
	// ------------------------------------------------------------
	// query CALL 
	// echo "query_string:$query_string<br />";
	// ------------------------------------------------------------
	query_posts($query_string  );
	// ------------------------------------------------------------
	if (have_posts()) {
		$array="";
		while (have_posts()){
			the_post();
			global $post;
			$array[usces_the_firstPrice('return')]=$post->ID;
		}
		if(      $sortset == 'sort3') {
			// asc
			$result=ksort($array,SORT_NUMERIC);
		}elseif($sortset == 'sort4') {
			// desc
			$result=krsort($array,SORT_NUMERIC);
		}
	
		foreach ($array as $key => $val) {
			query_posts('&p='.$val);
			the_post();
			global $post;

			//$ziko='<div style="border:1px dotted #c00;width:180px;font-size:10px;color:#c00">&nbsp;</div>';
			// usces_the_itemZaikoNum を使うための決まり文句
			usces_the_item();
			usces_have_skus();
			//
			$zstat=usces_the_firstZaiko('return');
			$zsuur=usces_the_itemZaikoNum('return');
			$zaiko ='<div style="width:180px;font-size:10px;color:#00c" align="center">';
			$zaiko.='<a href="'.get_permalink().'" title="'.$post->post_title.'">&nbsp;</a>';
			$zaiko.='</div>';
			if($zstat<=1){
				if($zsuur==''||$zsuur<=0 ){
					$zaiko='<div style="border:1px dotted #c00;width:180px;font-size:10px;color:#c00" align="center">売り切れ</div>';
				}
			}else{
				if(     $zstat==2){
					$zaiko='<div style="border:1px dotted #c00;width:180px;font-size:10px;color:#c00" align="center">売り切れ</div>';
				}elseif($zstat==3){
					$zaiko='<div style="border:1px dotted #c00;width:180px;font-size:10px;color:#c00" align="center">入荷待ち</div>';
				}elseif($zstat==4){
					$zaiko='<div style="border:1px dotted #c00;width:180px;font-size:10px;color:#c00" align="center">販売終了</div>';
			}
		}
?>

<div style="float:left;width:180px;height:240px;margin:5px 20px;padding:2px 10px 0px 10px;/*border:1px solid #c00;*/border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;">
 <div style="font-size:10px;height:200px;" align="center" >
  <div style="height:32px;"><h4 style="font-size:12px;text-decoration:bold;"><?php the_title(); ?></h4></div>
  <div style="hight:100px;"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( array(100,100) ); ?></a></div>
  <div style="text-align: left; vertical-align: top;width:180px;"><?php echo mb_substr(strip_tags(get_the_content()), 0, 30, "UTF-8"); ?>…</div><div style="color:#333;" align="right"><?php echo usces_the_firstPrice().' 円'; ?></div>
 </div>
<?php echo $zaiko; ?>
</div>
<?php
	}	// <!-- while -->
?>
<br clear="all"><div class="clear:both"></div>
// ----- / ここから味噌 ---


<?php
//--------------------------------------------------------------------------
}else{	// 1==1
//--------------------------------------------------------------------------
?>
<div id="cat-list">
<ul>
<?php
  query_posts($query_string."&order=DESC");
  while (have_posts()) {
    the_post();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<h4><?php the_title(); ?></h4>
<p><?php echo mb_substr(strip_tags(get_the_content()), 0, 100, "UTF-8"); ?>…</p>
</a></li>
<!-- /.cat-list -->
<?php
  }  // <!-- while -->
?>
</ul>
<div>
<?php
//--------------------------------------------------------------------------
}	// 1==1
//--------------------------------------------------------------------------
?>

</section>
<div style="text-align: center; margin: 10px;"><?php if ( function_exists( 'page_navi' ) ) { page_navi( 'items=7&prev_label=前へ&next_label=次へ&first_label=最初&last_label=最後&show_num=1&num_position=after' ); } ?></div>

<?php
} else {	// have_posts -->
?>
<br />
<h3>お探しのページは見つかりません!</h3>
<p> 申し訳ありません! <a href="<?php bloginfo('url'); ?>">トップページ</a>へ移動して再度お探しください!!</p>
<div>
</section>

<?php } ?>

<?php 
// クエリをリセット
wp_reset_query();
?>

</article>

</div>
<!-- /#contents" -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
つまりだ、post id とキー部分をもってきて、 最終的には post_id で呼び出してるってこと、the_post() を2回も読んでいるのでとっても動きに無駄がでるんだけど仕方ない。スタックをつかっているのでデータ数が巨大になると動くかどうか微妙。
機能をいれたってことにとどめておいて、WelCartの開発元がそこを公開してくれたら教えてください。それまでは、これでしのぎます。

スポンサーリンク

関連記事

スポンサーリンク

よく使うタグ

・float クリア
<br clear="all"><div style="clear:both;" class="clearfix"></div>
・角丸め
round-radius
border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;
・div box
overflow:scroll;min-width:300px;max-width:300px;min-height:300px;max-height:300px;
・TEXTAREAリサイズ
resize: vertical;
・サイトURL
home_url() // http://…
if(site_url()==home_url){
$shorturl_yuzu_path = substr(ABSPATH,0,strpos( ABSPATH, substr(site_url(),strlen(home_url()) ) ) ).’/’;
}else{
$shorturl_yuzu_path = ABSPATH.’/’;
}
// /var/…
・WP HOME URL
site_url() // http://…/wp
ABSPATH // /var/…/wp
・プラグイン(自分のDIR追加必要)
plugins_url() // http://…/plugins
WP_PLUGIN_URL // http://…/plugins
WP_PLUGIN_DIR // /var/…/plugins
・使用中のテーマ
get_template_directory_uri() // http://…/theme/xx
get_template_directory() // /var/…/theme/xx
・wp-content
content_url() // http://…/wp-content
WP_CONTENT_DIR // /var/…/wp-content
・画像URLからDIR変換
$pctdir=str_replace(content_url(), WP_CONTENT_DIR,$pcturl);
・パス名分解
$pathData = pathinfo($file);
echo $pathData["dirname"]; // /var/~
echo $pathData["filename"]; // xxx
echo $pathData["extension"]; // txt
echo $pathData["basename"]; // xxx.txt
・画像サイズ
list($width,$height) = getimagesize($url);
if(has_post_thumbnail()){
$thumbnail_id = get_post_thumbnail_id();
$thumbnail_img = wp_get_attachment_image_src( $thumbnail_id , ‘full’ );
$src = $image[0]; //url
$width = $image[1]; //横幅
$height = $image[2]; //高さ
・画像サイズ比率
list($src_w,$src_h) = getimagesize($file);
$dst_w = 600;$dst_h = 0;
$dst_h = ($dst_w!=0)?(intval(($src_h*$dst_w)/$src_w )):(($dst_h!=0)?(intval(($src_w*$dst_h)/$src_h)):0);
・疑似要素順
link visited hover active


特殊文字
シングルクォート : &#39;
ダブルクォート : &quot;
WP設定内表示前処理(htmlタグ許可項目)
$str = str_replace(‘<','&lt;' ,$str);
$str = str_replace(‘>’,’&gt;’ ,$str);
$str = str_replace(‘\”‘,’&quot;’,$str);
$str = str_replace(“\'”,’&#39;’ ,$str);
WO設定項目表示前処理(htmlタグ許可項目)
$str = str_replace(‘\”‘,'”‘,$str);
$str = str_replace(“\'”,”‘”,$str);
・テーマ
get_theme_root_uri()
get_theme_root()
・WP 情報
get_bloginfo( $show )
・Wp config FTP 情報 設置
define( ‘FTP_HOST’, ‘host’ );
define( ‘FTP_USER’, ‘id’ );
define( ‘FTP_PASS’, ‘pw’ );
define( ‘FTP_SSL’, false );
弾に使う
placeholder:ユーザー入力補助

カテゴリー

flexbox インストールなど面倒なことなしにDIV BOX を横に並べるクラス

flexbox インストールなど面倒なことなしにDIV BOX を横に並べるクラス flexbox は、div の box を横に並べるためのブラウザに標準装備されてるクラス。乱暴な言い方すればそういうことです。現場では細かいことはどうでもよくて、とにかく簡単に DIV BOX を横

vba タスクに IE が残る

vba タスクに IE が残る vba タスクに IE が残る。VBAでブラウザ経由でサイトのページの情報を拾い上げる技は結構使いますよね?私だけ?wwwそうすると、なぜかvba タスクに IE が残っていて、繰り返し利用するとどん

wp datepicker 特定の項目で動かない。

wp datepicker 特定の項目で動かない。 ワードプレスでつかえる datepicker は、とっても簡単につかえて便利なライブラリーです。javascript は、なれないとデバッグに時間がかかり気持ち的にすごく敷居が高い気がしますがわかって

プラグインの管理画面でHTMLの入力を許すフィールドの扱い方

プラグインの管理画面でHTMLの入力を許すフィールドの扱い方 ワードプレスのプラグインを書いていると、HTMLタグを入力できるフィールドを作りたくなりますよね?例えば、ページにデータを表示するときにその書式を入力さえるとか。例えば、これはワードプレスのプラグイン

ワードプレスのフッターにある jQueryの読み込みをヘッダーで出力させる

ワードプレスのフッターにある jQueryの読み込みをヘッダーで出力させる ワードプレスのフッターにあるjQueryの読み込みをヘッダーで出力させる必要ができました。simplecity の後継ともいわれる ワードプレスのテーマ cocoon のカスタマイズです。cocoon

ワードプレスで jQuery の後に script を読み込ませる方法(動的スクリプトもOK)

ワードプレスで jQuery の後に script を読み込ませる方法(動的スクリプトもOK) ワードプレスで jQuery の後に script を読み込ませる方法、これは動的スクリプトも可能な方法です。ワードプレスのプラグインで動くシステムを開発していたところ、ユーザーインターフェイスでどう