商品画像情報を編集するフィルターフック
-
投稿者投稿
-
2018年6月30日 9:20 PM #85979hiromaya参加者
この度はお世話になります。
商品画像情報usces_the_itemImage()などを編集する、フィルターフックはどちらになりますでしょうか。
申し訳ございませんが、ご教授ください。
よろしくお願いいたします。2018年6月30日 9:49 PM #85980hiromaya参加者すみません、間違えました。
商品画像URLの関数usces_the_itemImageURLを編集するフックが見つかりませんでした。
どなたかお教え頂ければ幸いです。2018年7月2日 9:25 AM #85993yasumaxキーマスターこんにちは。
該当関数にはフィルターフックはありません。
ちなみに何をされようとしてますか?2018年7月2日 10:09 AM #85997hiromaya参加者当方サイトでは商品画像が多く、画像も大きいため、サーバーに負担がかかっていました。そこで、商品画像を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のドメインを置換する方法はないでしょうか。または、代替の方法はないでしょうか。
2018年7月2日 11:43 AM #85999yasumaxキーマスターこんにちは。
そういう事情なのですね。
全く別のURLにするのであれば、usces_the_itemImageURL
を参考にしながら独自に関数を作られたほうがいいのではないでしょうか。usces_the_itemImageURL
はWelcart内部で利用している部分がなく、テンプレート側でしか利用されていません。
なので、独自に関数を作ってしまうほうがいいのではないかと思います。2018年7月2日 10:51 PM #86011hiromaya参加者ご返信ありがとうございます。
ご教示いただいた通り、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;
}}
-
投稿者投稿
- このトピックに返信するにはログインが必要です。