2017-11-21 20 views
1

woocommerce 2.3では、グループ化された製品の一部であった単一の製品のpost_parentがありました。したがって、それらをリンクすることが可能でした:グループ化された製品のリンクを1つのwoocommerceの子どもから取得します。

function parent_permalink_button() { 
    global $post; 
    if($post->post_parent != 0){ 
     $permalink = get_permalink($post->post_parent); 
     echo '<a class="button" href="'.$permalink.'">Link to Parent</a>'; 
    } 
} 

woocommerce 3.0.0の更新状況が変更されました。実際それは今は反対です。グループ化された製品に_childrenがあります。

リンクを単一製品からグループ化するにはどうすればよいですか?複数のリンクが存在することができるので、それはより多くのグループ化された製品の一部にすることができます(それは私のお店のケースではありません)

おかげミハル

答えて

1

それはこのよう3+ WooCommerceのためにその機能を構築することが可能です。
(オプション$post_id引数付き)

/** 
* Get a button linked to the parent grouped product. 
* 
* @param string (optional): The children product ID (of a grouped product) 
* @output button html 
*/ 
function parent_permalink_button($post_id = 0){ 
    global $post, $wpdb; 

    if($post_id == 0) 
     $post_id = $post->ID; 

    $parent_grouped_id = 0; 

    // The SQL query 
    $results = $wpdb->get_results(" 
     SELECT pm.meta_value as child_ids, pm.post_id 
     FROM {$wpdb->prefix}postmeta as pm 
     INNER JOIN {$wpdb->prefix}posts as p ON pm.post_id = p.ID 
     INNER JOIN {$wpdb->prefix}term_relationships as tr ON pm.post_id = tr.object_id 
     INNER JOIN {$wpdb->prefix}terms as t ON tr.term_taxonomy_id = t.term_id 
     WHERE p.post_type LIKE 'product' 
     AND p.post_status LIKE 'publish' 
     AND t.slug LIKE 'grouped' 
     AND pm.meta_key LIKE '_children' 
     ORDER BY p.ID 
    "); 

    // Retreiving the parent grouped product ID 
    foreach($results as $result){ 
     foreach(maybe_unserialize($result->child_ids) as $child_id) 
      if($child_id == $post_id){ 
       $parent_grouped_id = $result->post_id; 
       break; 
      } 
     if($parent_grouped_id != 0) break; 
    } 
    if($parent_grouped_id != 0){ 
     echo '<a class="button" href="'.get_permalink($parent_grouped_id).'">Link to Parent</a>'; 
    } 
    // Optional empty button link when no grouped parent is found 
    else { 
     echo '<a class="button" style="color:grey">No Parent found</a>'; 
    } 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルやも任意のプラグインファイルになります。

を試験し、USAGE


WooCommerce 3+で動作:商品テンプレートに直接、例えばオプションの引数$post_idを使用せずに)(2例)

1:

parent_permalink_button(); 

2)Usi関数をどこにでも置いて、その引数を定義する$post_id

$product_id = 37; // the product ID is defined here or dynamically… 
parent_permalink_button($product_id); 
+0

素晴らしい!できます。短い説明テンプレートに追加し、($ product-> is_type( 'simple')){ $ update_excerpt = "
"の場合、製品タイプ 'simple'に対して評価する条件を付けました。 parent_permalink_button()。 "

"。$ post-> post_excerpt; } –

関連する問題