Welcartのリファレンスを見てもメディアライブラリで管理している商品画像の代替テキスト(ALT属性)を取得する方法が見当たりませんでしたので、独自に取得する方法を書いていきます。またついでに商品コードから商品画像のURLの取得方法も下の方に書いていきます。
商品画像の代替テキストを取得する
まず商品コードを取得します。商品コードは wp_postmeta テーブルに “_itemCode” という meta_key で管理されています。
つぎに取得した商品コードをもとにWelcartで用意されている画像の投稿ID取得用の関数 “get_mainpictid()” と “get_pictids()” を利用してメイン画像とサブ画像の投稿IDを取得します。
最後に代替テキストが管理されている wp_postmeta テーブルから画像の投稿IDと “_wp_attachment_image_alt” というmeta_key で代替テキストを取得します。
global $post;
global $usces;
//商品コード取得
$code = get_post_meta($post->ID, '_itemCode', true);
// ## ▼▼メイン画像の情報▼▼ ##
//商品コードからメイン画像の投稿IDを取得する
$pictid = (int)$usces->get_mainpictid($code);
//メイン画像の投稿IDから代替テキスト(ALT属性)を取得する
$alt = get_post_meta( $pictid, '_wp_attachment_image_alt', true );
// ## ▼▼サブ画像の情報▼▼ ##
//商品コードからサブ画像全ての投稿IDを取得する
$pictids = $usces->get_pictids($code);
//サブ画像の投稿IDから代替テキスト(ALT属性)を取得する
$sub_alt = array();
foreach ($pictids as $pictid) {
$sub_alt[] = get_post_meta( $pictid, '_wp_attachment_image_alt', true );
}
商品画像のURLを取得する
Welcartには “usces_the_itemImageURL()”、”usces_get_itemSubImageNums()” とメイン画像とサブ画像を取得するための関数は用意されていますが、上記の代替テキスト取得の流れで画像の投稿IDをもとにWordPress関数の “wp_get_attachment_url()” で画像URLを取得する方法をご紹介いたします。
global $post;
global $usces;
//商品コード取得
$code = get_post_meta($post->ID, '_itemCode', true);
// ## ▼▼メイン画像の情報▼▼ ##
//商品コードからメイン画像の投稿IDを取得する
$pictid = (int)$usces->get_mainpictid($code);
//メイン画像の投稿IDから画像URLを取得する
$img_url = wp_get_attachment_url( $pictid );
// ## ▼▼サブ画像の情報▼▼ ##
//商品コードからサブ画像全ての投稿IDを取得する
$pictids = $usces->get_pictids($code);
//サブ画像の投稿IDから画像URLを取得する
$sub_img_url = array();
foreach ($pictids as $pictid) {
$sub_img_url[] = wp_get_attachment_url( $pictid );
}
動作環境情報
エックスサーバー(x10) PHP 7.3.16 MySQL 5.7 WordPress 5.5.1 Welcart e-Commerce 1.9.33
コメント