ショートコードで商品情報を投稿ページにて取得して表示させたい

フォーラム その他 ショートコードで商品情報を投稿ページにて取得して表示させたい

  • このトピックには2件の返信、2人の参加者があり、最後にkichiにより10年、 10ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #59163
    kichi
    参加者

    動作に関するご質問の場合は必ずご記入ください。


    WordPress のバージョン:3.8
    Welcart のバージョン:1.3.10.2
    ご利用のテーマ:Weltheme
    症状を確認したブラウザ:GoogleChrome
    サーバー(会社名、サービス名):エックスサーバー
    SSLの利用: 共用SSL
    WordPress のパーマリンク設定:デフォルト


    ショートコード自作に関しての質問です。

    投稿記事内にてショートコードから商品情報を取得したいと思っています。
    具体的には ショートコードにIDを記載することで リンク、サムネイル、商品名、価格 の情報を引っ張りたいと思っています。

    下記コードはGoogle検索にて見つけたコードになります。(by かちびと.net様記事)

    function.phpに記載して他の「投稿データ」を呼び出すことはできました。
    しかしWelcartの商品情報(リンク、サムネイル、商品名、価格)を呼び出すことが出来ずにいます。

    こちらの方式で商品のパーマリンク、サムネイル、商品名、価格を取得しリスト表示させることは出来ないでしょうか?
    あとできれば「スラッグ」ではなく「IDもしくは商品コード」を入力することで商品情報を取得したいです。

    プログラム初心者の質問で申し訳ありませんが、どうぞよろしくお願いいたします。

    ▼参考コード

    //商品のスラッグから記事情報を取得
    function add_other_post($params = array()) {
    extract(shortcode_atts(array(
    ‘slug’ => ”
    ), $params));
    $html = ”;
    if ($slug == ”) return $html;

    $queries = new WP_Query(“pagename=$slug”);
    if (!$queries->have_posts()) {
    $queries = new WP_Query(“name=$slug”);
    }
    // こっからループっぽい
    while ($queries->have_posts()) {
    $queries->the_post();

    // 生成されるHTML。自由に作っちゃえばいいじゃない
    $link = ‘‘;
    $html .=
    ‘<h2>’ . $link . the_title(”,”,false) . “
    </h2>n” .
    (has_post_thumbnail() ?
    $link . get_the_post_thumbnail() . ” : ”
    );
    }
    return $html;
    }
    add_shortcode(‘otherpost’, ‘add_other_post’);

    • このトピックはnanbuが10年、 9ヶ月前に変更しました。
    #68190
    nanbu
    キーマスター

    こんにちは。

    パーマリンクは、WordPressに get_permalink($post_id) という関数があります。

    サムネイルは、

    global $post
    $img_tag = usces_the_itemImage(0, 60, 60, $post, 'return' );

    で取得できます。

    商品名は、以下のようになります。

    usces_the_itemName( ‘return’, $post )

    価格は、以下のようになります。

    usces_the_firstPrice( ‘return’, $post )

    #68691
    kichi
    参加者

    ありがとうございます。
    こちらのコードで試してみたいと思います。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。