代码之家  ›  专栏  ›  技术社区  ›  Michal S

从woocommerce 3中的一个孩子那里获取分组产品链接

  •  1
  • Michal S  · 技术社区  · 7 年前

    在woocommerce 2.3中,单产品的post_父产品是分组产品的一部分。因此,可以通过以下方式将它们联系起来:

    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的更新,情况发生了变化。实际上现在是相反的。分组产品有其子项。

    如何创建从单个产品到其分组产品的链接?它可以是更多分组产品的一部分,因此可以有多个链接(但我的商店不是这样)

    谢谢你,迈克尔

    1 回复  |  直到 7 年前
        1
  •  5
  •   LoicTheAztec    7 年前

    可以通过以下方式为WooCommerce 3+构建该功能:
    (带有可选 $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>';
        }
    }
    

    代码进入函数。活动子主题(或主题)或任何插件文件中的php文件。

    在WooCommerce 3中测试并工作+


    用法 : (2例)

    1) 不使用可选参数 $post\u id

    parent_permalink_button();
    

    2) 到处使用函数,定义它的参数 $post\u id :

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