こんにちは。
可能ですが、WordPressのループ処理の原理が判っていないと、ご自分で行うのはちょっと難しいかもしれません。
while (have_posts())
でループされることになりますが、その直後に the_post()
があるかと思います。それに続けて、usces_the_item()
と usces_have_skus()
を実行してデータをセットします。
カート投入ボタンはフォーム送信になりますので、以下のようにして数量とボタンフィールドを作ってやります。
<form action="<?php echo USCES_CART_URL; ?>" method="post">
<div>数量<?php usces_the_itemQuant(); ?><?php usces_the_itemSkuUnit(); ?></div>
<div><?php usces_the_itemSkuButton('カートへ入れる', 0); ?></div>
</form>
これができるのは、商品オプションの無い単純なものである必要があります。
また SKU が複数ある場合、最初の一つしか表示されませんので注意が必要です。
いつもお世話になっております。
すごく初歩的な質問だと思うのですが、悩んでも分からず、こちらで質問すれば造作もないことなのかなと思い、質問させて下さい。
商品画像のキャプションを表示するテンプレートタグusces_the_itemImageCaption()
ですが、
<span><?php usces_the_itemImageCaption(0); ?></span>
とタグで囲んだ場合、キャプションが無いとき、<span></span>
と空タグになってしまうので、if文を作って、あるときは表示、無いときは表示しないようにしたいのですが、どうすれば良いでしょうか?
<?php if( ○○○ ): ?>
<span><?php usces_the_itemImageCaption(0); ?></span>
<?php endif; ?>
こんな感じなのですが、条件の作り方が分かりません。
タグが付けられれば他の方法でも構いません。
どなたかお知恵をお貸し下さい。
-
このトピックは
kuroneが10年、 5ヶ月前に変更しました。
>最初のSKU価格しか表示されないのですが、複数ある場合は、すべて表示させたいと思っています。
提示のコード内、
<?php if (usces_is_skus()) : ?>
から、商品ページが持つSKU毎にループ処理をしてそれぞれ価格を取得・表示という流れになるかと思います。
・条件分岐「usces_is_skus()」内を修正
<?php if (have_posts()) : ?>
<div class="thumbindex">
<?php while (have_posts()) : the_post(); usces_the_item(); ?>
<div class="thumbnail_box">
<div class="thumimg"><?php usces_the_itemImage($number = 0, $width = 230, $height = 200 ); ?></div>
<div class="thumtitle" rel="bookmark"><?php usces_the_itemName(); ?></div>
<?php if (usces_is_skus()) : ?>
<?php while(usces_have_skus()) : //SKUループここから ?>
<div class="price"><?php usces_the_itemPriceCr(); ?><?php usces_guid_tax(); ?></div>
<?php endwhile; usces_reset_skus(); //SKUループここまで ?>
<?php endif; ?>
</div><!-- thumbnail_box -->
<?php endwhile; ?>
</div>
1点、投稿ループの開始時に記述されている
usces_the_item();
はくれぐれも消さないよう注意して下さい。
※離れているので一見関係なさそうですが、これがないとSKUループ(usces_have_skus())が効かなくなります。
PHP初心者です。どうしてもコードがわからなくて助けていただければと思います
。よろしくお願いいたします。
商品一覧画面(archive.php)でこのように表示させています。
<?php if (have_posts()) : ?>
<div class=”thumbindex”>
<?php while (have_posts()) : the_post();usces_the_item(); ?>
<div class=”thumbnail_box”>
<div class=”thumimg”>“><?php usces_the_itemImage($number = 0, $width = 230, $height = 200 ); ?></div>
<div class=”thumtitle”>” rel=”bookmark”><?php usces_the_itemName(); ?></div>
<?php if (usces_is_skus()) : ?>
<div class=”price”><?php usces_crform( usces_the_firstPrice(‘return’), true, false ); ?><?php usces_guid_tax(); ?></div><?php endif; ?>
</div><!– thumbnail_box –>
<?php endwhile; ?>
</div>
これだと、最初のSKU価格しか表示されないのですが、複数ある場合は、すべて表示させたいと思っています。どうすればいいでしょうか?
よろしくお願いします。。。。。
ご回答ありがとうございます。
カートページ表示カスタマイズを参考にさせてもらい、
wc_item_single.php内の
<?php _e(‘stock status’, ‘usces’); ?>コメントアウトで在庫状態文字非表示
<?php usces_the_itemZaikoStatus(); ?>をコメントアウトすることで、
商品詳細の在庫有り文字は非表示になりました。
しかし、wc_cart_page.php内は、
<?php _e(‘stock status’,’usces’); ?>のコメントアウトで、
在庫状態は非表示になりましたが、在庫有りを非表示にできません。
<?php usces_get_cart_rows(); ?>コメントアウトで、
購入商品行すべて非表示になってしまい、在庫有りだけを非表示にできません。
どこをコメントアウトすればよいでしょうか。
よろしくお願いいたします。
こんにちは。
テンプレートで数量フィールドを出力しているテンプレートタグは、です。これをセレクトに書き換えればよい訳ですが、商品のpost_idとSKUコードを渡さなくてはいけないので、ちょっと厄介です。
実際にはこの様になるかと思います。
<select name="quant[<?php echo $post->ID; ?>][<?php echo urlencode(usces_the_itemSku('return')); ?>]" >
お世話になります。
ご指摘があった箇所を調べてみましたが、PHPがあまり分からず直せておりません。
下記はうまくいかないソースの一部分です。線内のソースを追加しましたが、追加で「売切れ」が価格表示部分の下辺りに表示されただけで、価格部分はそのまま表示されたままになってしまいます。どのようにすれば正しく表示されますでしょうか。
<div id="content" class="one-column">
<h3>Featured Products</h3>
<div class="clearfix rcmnd">
<?php $reco_ob = new wp_query(array('category_name'=>'itemreco', 'posts_per_page'=>8, 'post_status'=>'publish')); ?>
<?php if ($reco_ob->have_posts()) : while ($reco_ob->have_posts()) : $reco_ob->the_post(); usces_the_item(); ?>
<div class="thumbnail_box">
<div class="thumimg"><a>"><?php usces_the_itemImage($number = 0, $width = 290, $height = 400 ); ?></a></div>
<div class="thumtitle"><a>" rel="bookmark"><?php usces_the_itemName(); ?></a></div>
________________________________
<?php if (!usces_have_zaiko_anyone() ) : ?>
<div class=”zaiko_status”>売切れ</div>
<?php else : ?>
<div class=”price”><?php usces_crform( usces_the_firstPrice(‘return’), true, false
); ?><?php usces_guid_tax(); ?></div>
<?php endif; ?>
________________________________
<?php if (usces_is_skus()) : ?>
<div class="price"><?php usces_crform( usces_the_firstPrice('return'), true, false ); ?></div>
<?php endif; ?>
</div>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; wp_reset_query(); ?>
</div>
</div><!-- end of content -->
商品画像の alt属性の変更方法をご説明いたします。
テンプレートタグの引数を変更することで、メディアの設定がそのまま反映されるようになります。以下の様にテンプレートを編集してください。メディアでの代替えテキストがaltとなって出力されます。
<?php usces_the_itemImage(0, 300, 300, $post ); ?>
↓
<?php usces_the_itemImage(0, 300, 300, $post, 'echo', 'pict' ); ?>
——————————————-
WordPress のバージョン:4.0.1–ja
Welcart のバージョン:1.4.11
ご利用のテーマ:オリジナル
症状を確認したブラウザ:クローム
サーバー(会社名、サービス名):お名前.com
SSLの利用:はい
WordPress のパーマリンク設定:投稿名
——————————————–
今までは下記のコードをsingle_item.phpに書き込んで、skuごとに画像を呼び出していました
global $usces;
$pictid = $usces->get_mainpictid(usces_the_itemSku(‘return’));
$html .= ‘<td rowspan=”2″>‘ .wp_get_attachment_image($pictid, array(80, 80), true) . ‘</td>’.”\n”;
1.4.11にバージョンアップしたら、画像を呼び出せなくなっています(上記コードをsingle_item.phpに追加済です)。
どこが原因なのかわからなく、ご教授いただければと思います。
よろしくお願いいたします。
何度も大変申し訳ありません、同時に「数量入力フィールド」も表示させたいと思っています。
// 数量入力フィールド
{
$price .= ‘数量:’.usces_the_itemQuant(‘return’);
}
//数量入力フィールドend
とこのようなコードを応用に書かれているコードの中に忍び込ませfunctions.phpに書いてみたのですが
数量入力フィールドは出ましたか、数量を変えてもウィジェットのカートの中の数字は1以上入りません。
どのようなコードを書けばよいのかアドバイスいただければ幸いです。
または、Item List Layoutで一覧表示中に、「カートへ追加」ボタンを押した分だけWidget Cartの数量に反映させることは出来るのでしょうか?
例:2回押せば、Widget Cartの数量が2になる。
お忙しい所恐縮ですが、なにとぞよろしくお願い致します。
こんにちは。
どこにどのようなコードでusces_the_itemQuant()を記載すればよいのでしょうか?
このコードは、usces_the_itemQuant()
の代わりに usces_direct_intoCart()
を使うということです。このままお試しください。
こんにちは、現在Item List LayoutとWidget Cartの組み合わせで
一覧表示させている時に「カートへ入れる」ボタンを表示させています。
その際に数量ボタンも表示させて、数量も反映させてカートへ入れたいと
思っているのですが、どのようにすればよいのかアドバイスをお願いできないでしょうか。
応用に書かれている以下のコードをfunctions.phpに追加する際に
どこにどのようなコードでusces_the_itemQuant()を記載すればよいのでしょうか?
add_filter(‘item_list_layout_filter_list_price’, ‘my_list_layout_filter_list_price’, 10, 3);
function my_list_layout_filter_list_price($price, $post, $opts){
global $usces;
$sku = usces_the_firstSku( ‘return’ );
$status_index = usces_the_firstZaiko( ‘return’ );
if( 1 < $status_index ){
$price .= ‘<div class=”zaiko_status”>’ . esc_html($usces->zaiko_status[$status_index]) . ‘</div>’;
}else{
$price .= usces_direct_intoCart($post->ID, $sku, false, ‘カートへ追加’, NULL, ‘return’);
}
return $price;
}
よろしくお願いいたします。
nanbuさん
SKUコードは半角英数字です。
‘<div class=”error_message”>’ .usces_singleitem_error_message($post->ID, usces_the_itemSku(‘return’), ‘return’). ‘</div>’
となっています。
そうですか。
では、SKUコードに全角文字を使っていることは無いでしょうか。もしそうでしたら$skuはurlencodeしてやらなくてはいけません。
それとテンプレート側ですが、この様になっていますでしょうか。
<div class="error_message"><?php usces_singleitem_error_message($post->ID, usces_the_itemSku('return')); ?></div>
以下コードで自己解決しました。
<?php echo usces_the_itemCprice('return') - usces_the_itemPrice('return'); ?>