商品画像情報を編集するフィルターフック

ホーム フォーラム 使い方全般 商品画像情報を編集するフィルターフック

このトピックには5件の返信が含まれ、2人の参加者がいます。2 週間、 5 日前 hiromaya さんが最後の更新を行いました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #85979

    hiromaya
    参加者

    この度はお世話になります。

    商品画像情報usces_the_itemImage()などを編集する、フィルターフックはどちらになりますでしょうか。

    申し訳ございませんが、ご教授ください。
    よろしくお願いいたします。

    #85980

    hiromaya
    参加者

    すみません、間違えました。

    商品画像URLの関数usces_the_itemImageURLを編集するフックが見つかりませんでした。
    どなたかお教え頂ければ幸いです。

    #85993

    yasumax
    キーマスター

    こんにちは。

    該当関数にはフィルターフックはありません。
    ちなみに何をされようとしてますか?

    #85997

    hiromaya
    参加者

    当方サイトでは商品画像が多く、画像も大きいため、サーバーに負担がかかっていました。そこで、商品画像を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のドメインを置換する方法はないでしょうか。または、代替の方法はないでしょうか。

    #85999

    yasumax
    キーマスター

    こんにちは。

    そういう事情なのですね。
    全く別のURLにするのであれば、usces_the_itemImageURLを参考にしながら独自に関数を作られたほうがいいのではないでしょうか。

    usces_the_itemImageURLはWelcart内部で利用している部分がなく、テンプレート側でしか利用されていません。
    なので、独自に関数を作ってしまうほうがいいのではないかと思います。

    #86011

    hiromaya
    参加者

    ご返信ありがとうございます。

    ご教示いただいた通り、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;
    }

    }

6件の投稿を表示中 - 1 - 6件目 (全6件中)

このトピックに返信するにはログインが必要です。