hsasaki 様
有り難うございます。
早速ご提案頂きました下記事項を試してました。
>他のプラグインの影響を受けている可能性はございませんでしょうか?
プラグインは全15個なので下記以外は停止をしてみました。
a3 Lazy Load
All In One SEO Pack
Google XML Sitemaps
Welcart e-Commerce
WP Multibyte Patch
zipaddr-jp
症状は改善しませんでした。
固定ページとか商品詳細ページで正常に動作しているので
プラグインの影響とは考えにくいと感じています。
>トップページとカテゴリーページで、個別に読み込んでいるライブラリー等の影響
個テーマ内の下記のファイルを一時的に削除して、カテゴリーを表示してみました。
category.php
function.php
header.php
この段階で親テーマのfunction.php → heder.php → category.phpと流れていると考えています。この状態でもa3 Lazy Loadは動作していません。
親テーマの該当ファイルの更新日は2018/12/21でした。
ただし、footer内の画像themes/welcart_basic-child/images/category.pngは
画像遅延読み込みされています。(子テーマ内のcategory.phpでも同様です)
私が加筆したcategory.php function.php header.phpを取り除いた状態でも
画像遅延読み込みが動作していない状態と考えますが・・・?
usces_the_itemImage(0, 175, 175)が原因しているのかとも考えましたが、
hoge_hoge.php内にusces_the_itemImage(0, 175, 175,$my_post)を使用して
固定ページ内でショートコードにてhoge_hoge.phpを呼び出しています。
この場合は画像遅延読み込みは正常に動作しています。
動作しているかどうかは目視による確認とソース内の<imgタグの代替えと、それに続く<noscript記載がされているかで判断をしています。
引き続きアドバイス宜しくお願いします。
hsasaki 様
有り難うございます。
Image Lade Thresholdの値は400にしています。
一応10に設定して、デベロッパーツールでiphone x の画面で見たりresponsiveの画面設定で縦長にしたりしています。
ブラウザ幅を狭くすると横に4枚の商品写真は2枚になり
10段以上になります。画像も圧縮をしている為さほど時間は掛かりません。スクロールをすると直前で画像が現れる感じはありません。また、ソースを開くと<imgタグ内にclass=”lazy lazy-hidden”の代替え画像もありません。
<noscript ・・・画像url・・</noscript>も無いところを見ると、lazy loadが何らかの原因で動いていないと思います。
固定記事の中にショートコードでusces_the_itemImage(0, 175, 175,・・・を記したphpファイルを実行させて4枚の商品画像を並べていますが、その記事はlazy loadが正常に動作している様に見えます。またソースもそのようになっています。
現状は、front-pageとcategoryの二つのページで動作していません。
子テーマ内のカスタマイズしたcategory.phpを一時的に削除して、親テーマのcategory.phpで実行しても動作ししていません。
あと考えられるのは、function.phpでの追加分が影響を与えているかも知れないと、リストを見ていますがそれらしいものはありません。朝早くに子テーマのfunction.phpを削除し見ればはっきりすると思います。ただ function.phpの可能性は低いと思っています。
引き続きアドバイス宜しくお願いします。
プラグインの読み込み位置は関係ないようです。
プラグインの設定にて、headerに読み込み位置を変更しても同じでした。
front-pageでは、画像を横に4枚usces_the_itemImage(0, 175, 175, $my_post)にて
表示しています。このパターンが何段か続いています。
ありがとうございます。
教えていただいた通りwc_templates/wc_item_single.php内の
div class=”skuform”
から
“<?php if( ” !== usces_the_itemSkuDisp(‘return’) ) : ?>”
の間に
<!– A-MEMBER –>
<?php if(usces_is_login() && usces_the_member_status(‘return’) == ‘A’ && preg_match(‘/A-/i’,usces_the_itemSku(‘return’))): ?>
<!– B-MEMBER –>
<?php elseif(usces_is_login() && usces_the_member_status(‘return’) == ‘B’ && preg_match(‘/B-/i’,usces_the_itemSku(‘return’))): ?>
<!– NOT-MEMBER –>
<?php else: ?>
<?php endif; ?>
というように「会員ランク”A”には”A-“が入ったSKUのみ、会員ランク”B”には”B-“が入ったSKUのみが表示される」ように条件分岐を追加したのですが、一部うまく表示されません。
添付した画像にあるようにskuformの中に�@�@�@�@�@�@�@のような文字列が入ってしまいます。初心者の自分では原因を突き止められなかったので、もし分かるようでしたら教えていただきたいです。
よろしくお願いいたします。
Attachments:
You must be
logged in to view attached files.
Jimmys 様
ご指摘のテンプレートタグusces_the_itemOption()およびusces_getItemOptName()につきまして、v1.9.10 から v1.9.17 の差分を比較しましたが、変更箇所はありませんでした。
「商品オプションのサイズ」とのことですが、オプションの名称に機種依存文字など、特殊文字を使用されていませんでしょうか。
Welcart 1.9.13にアップデートしたところ、登録済みの商品の商品オプションのプルダウンメニュー(select)が空白になってしまい何も選択できなくなってしまいました。
対象のコードはwc_item_single.phpの<?php usces_the_itemOption( usces_getItemOptName(),” ); ?>です。
HTMLは下記のようになっており、<option>の選択肢がなくなっています。
<div class="select_size">
<label for="itemOption[30295][S0484-J][]" class="iopt_label"></label>
<select name="itemOption[30295][S0484-J][]" id="itemOption[30295][S0484-J][]" class="iopt_select" onkeydown="if (event.keyCode == 13) {return false;}">
<option value="" selected="selected"></option>
</select>
</div>
尚、本来であれば<option>は下記のように表示されます。
<option value="#NONE#" selected="selected">選択してください</option>
<option value="サイズ1">サイズ1</option>
<option value="サイズ2">サイズ2</option>
前バージョン(1.9.10)に戻すと正しく動作しました。
商品登録ページでのサイズ登録は添付のスクリーンショットのようになっています。
——————————————-
WordPress のバージョン:4.9.8
Welcart のバージョン:1.9.13
Welcart専用の拡張プラグイン:なし
ご利用のテーマ:自作テーマ
症状を確認したブラウザ:Mac Safari
サーバー:XSEVER
SSLの利用:常時SSL
WordPress のパーマリンク設定:/%category%/%post_id%/
——————————————–
解決法をご教授いただけると幸いです。
宜しくお願い申し上げます。
Attachments:
You must be
logged in to view attached files.
Welcart 1.9.13にアップデートしたところ、登録済みの商品の商品オプションのプルダウンメニュー(select)が空白になってしまい何も選択できなくなってしまいました。
対象のコードはwc_item_single.phpの<?php usces_the_itemOption( usces_getItemOptName(),” ); ?>のようです。
前バージョン(1.9.10)に戻すと正しく動作しました。
——————————————-
WordPress のバージョン:4.9.8
Welcart のバージョン:1.9.13
Welcart専用の拡張プラグイン:なし
ご利用のテーマ:自作テーマ
症状を確認したブラウザ:Mac Safari
サーバー:XSEVER
SSLの利用:常時SSL
WordPress のパーマリンク設定:/%category%/%post_id%/
——————————————–
宜しくお願い申し上げます。
SKUセレクトの使用をしたときは問題ないのですが、SKUセレクトの使用をしないときはプルダウンの数値が在庫数の値が初期値になってしまいます。
また、在庫が1の場合で購入制限に1を入れると1-50までのプルダウンになります。
■function.php
//個数プルダウン
function bks_the_itemQuant_select( $max = 0 ){
global $post, $usces;
if(empty($max)){
$max = 10;
}
$zaiko = usces_the_itemZaikoNum(‘return’);
$sku_enc = urlencode(usces_the_itemSku(‘return’));
$restriction = $usces->getItemRestriction($post->ID);
if( (” != $zaiko && 0 < $zaiko && ” != $restriction && $zaiko > $restriction) || (” == $zaiko && ” != $restriction) ){
$max = $restriction;
}elseif( (” != $zaiko && 0 < $zaiko && ” != $restriction && $zaiko < $restriction) || (” != $zaiko && ” == $restriction) ){
$max = $zaiko;
}
$select = ‘<select name=”quant[‘ . $post->ID . ‘][‘ . $sku_enc . ‘]” id=”quant[‘ . $post->ID . ‘][‘ . $sku_enc . ‘]” class=”skuquantity” onkeydown=
“if (event.keyCode == 13) {return false;}”>’ . “\n”;
for($i=1; $i<=$max; $i++){
$select .= ‘<option value=”‘ . $i . ‘”>’ . $i . ‘</option>’ . “\n”;
}
$select .= ‘</select>’;
echo $select;
}
■wc_item_single.php
<?php _e(‘Quantity’, ‘usces’); ?><?php bks_the_itemQuant_select( 10 ); ?><?php usces_the_itemSkuUnit(); ?><?php usces_the_itemSkuButton(__(‘Add to Shopping Cart’, ‘usces’), 0); ?>
——————————————-
WordPress のバージョン:(WordPress 4.8.7 )
Welcart のバージョン:(1.9.5)
Welcart専用の拡張プラグイン:(WCEX Multi Price、WCEX SKU Select)
ご利用のテーマ:(Welcart Basic Child)
症状を確認したブラウザ:chrom
サーバー:(ロリポップ)
SSLの利用:(常時SSL)
——————————————–
宜しくお願いします。
現在の環境
WordPress のバージョン:4.9.7
Welcart のバージョン:1.2.7 2018/06/28ダウンロード
Welcart専用の拡張プラグイン:
ご利用のテーマ:welcart_basic(子テーマ)
症状を確認したブラウザ:chrome
サーバー:(会社名、サービス名)xserver
SSLの利用:(独自 常時SSL)
カテゴリー内の商品を再分類できないものかと模索中です。
分類キーはskuの単位unitに組み込んだサイズ(S/M/L/LL)等に再分類して表示できないものかと考えています。
カテゴリーS、カテゴリーM、カテゴリーLなどを作れば可能かとも思いますが、商品登録時に面倒なのでまたこれまで登録をしたものを再登録も・・・。
usces_the_itemSkuUnit();では画面にSとかLLが表示されてしまいます。表示させない方法があればwhile 内で分類が可能かとも思います。
カテゴリー内の商品を再分類について、
何か良い方法があればご教示いただけないでしょうか。
宜しくお願い致します。
こんにちは。
usces_the_itemImage の中では wp_get_attachment_image を使用しています。いろいろ試してみられるとよいかと思いますが、商品画像が40枚とのことですので、時間がかかってもしょうがないかもしれません。
Welcart Basic の子テーマを作って使用しています。
ウェジットのベストセラーに順位を表示させたく、こちらのサイトを参考にfunctions.phpに下記を記入しましたが、表示されません。
よろしくお教えください。お願いいたします。
//ベストセラー順位を表示
add_filter('usces_widget_bestseller_auto_text', 'my_bestseller', 10, 3);
function my_bestseller() {
$args = func_get_args();
list($html, $post_id, $index) = $args;
$post = get_post($post_id);
$list = usces_the_itemImage(0, 40, 40, $post, 'return' ) . '<li>第' . ($index+1) . '位<a href="' . get_permalink($post_id) . '">' . $post->post_title . '</a></li>';
return $list;
}
お世話になっております。
少し時間がないので、概要のみお伝え致します。
商品一覧のページを作成し、テンプレートタグ
「usces_the_itemImage」で商品画像を読み込んでいますが、
1つあたり0.3秒ほどかかっており、ページには40枚画像があるので、
ページの表示に12秒以上必要となっています。
通常の画像読み込みよりも時間がかかっているように思いますが
何か改善方法はありますでしょうか。
あと、まだ試していないのですが、WordPressのタグのみで
商品画像を読み込んだとしたら、「usces_the_itemImage」を使うよりも
読み込みは速くなったりしますでしょうか。
以上、よろしくお願い致します。
ご返信ありがとうございます。
ご教示いただいた通り、usces_the_itemImageURLをもとにユーザー定義関数を作成することにより、商品画像URLのドメインを置換することができました。
以下、備忘録としてコードを貼り付けいたします。
/* 商品URL置換関数 */
function replacement_the_itemImageURL($number = 0, $out = ”, $post = ” ) {
global $usces;
$ptitle = $number;
if( $ptitle && is_string($number) ){
$picposts = query_posts(array(‘post_type’=>’attachment’,’name’=>$ptitle));
if( !$picposts ){
return ”;
}
$pictid = empty($picposts) ? 0 : $picposts[0]->ID;
$pictid = $picposts[0]->ID;
$html = wp_get_attachment_url( $pictid );
}else{
if($post == ”) global $post;
$post_id = $post->ID;
$code = get_post_meta($post_id, ‘_itemCode’, true);
if(!$code) return false;
$name = get_post_meta($post_id, ‘_itemName’, true);
if( 0 == $number ){
$pictid = (int)$usces->get_mainpictid($code);
$html = wp_get_attachment_url( $pictid );
$replace = array(
‘example.com’ => ‘abc12345cdn.com’
);
$replace_html = str_replace(array_keys($replace), $replace, $html);
}else{
$pictids = $usces->get_pictids($code);
$ind = $number – 1;
$pictid = ( isset($pictids[$ind]) && (int)$pictids[$ind] ) ? $pictids[$ind] : 0;
$html = wp_get_attachment_url( $pictid );
$replace = array(
‘example.com’ => ‘abc12345cdn.com’
);
$replace_html = str_replace(array_keys($replace), $replace, $html);
}
}
if($out == ‘return’){
return $replace_html;
}else{
echo $replace_html;
}
}
こんにちは。
そういう事情なのですね。
全く別のURLにするのであれば、usces_the_itemImageURLを参考にしながら独自に関数を作られたほうがいいのではないでしょうか。
usces_the_itemImageURLはWelcart内部で利用している部分がなく、テンプレート側でしか利用されていません。
なので、独自に関数を作ってしまうほうがいいのではないかと思います。
当方サイトでは商品画像が多く、画像も大きいため、サーバーに負担がかかっていました。そこで、商品画像をAWSのS3に保管し、CDNであるCloud Frontを経由して、商品ページに掲載をすることにしました。利用にあたって、過去の商品情報の画像URLのドメインをCDNのドメインへ置換したいと考えております。
流れは以下の通りです。
1.S3のバケットに画像データーをアップロード
2.S3のバケットをCloudFrontでキャッシュ
3.CloudFrontのUrl(例 abc12345cdn.com/itemimage.jpg)で商品ページに掲載
usces_the_itemImage()はフイルターフックで置換に成功しました。
画像のリンクであるaタグはusces_the_itemImageURLを使用しているので、置換ができませんでした。
usces_the_itemImageURLのドメインを置換する方法はないでしょうか。または、代替の方法はないでしょうか。