从 woocommerce 3 中的子项之一获取分组产品链接

1 php wordpress product permalinks woocommerce

在 woocommerce 2.3 中,单个产品有 post_parent,这是分组产品的一部分。因此可以通过以下方式链接它们:

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>';
   }
}
Run Code Online (Sandbox Code Playgroud)

随着 woocommerce 3.0.0 更新,情况发生了变化。其实现在正好相反。分组产品有其_子项。

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

谢谢米哈尔

Loi*_*tec 5

可以通过以下方式为 WooCommerce 3+ 构建该函数:
\n (带有可选$post_id参数)

\n\n
/**\n * Get a button linked to the parent grouped product.\n *\n * @param string (optional): The children product ID (of a grouped product)\n * @output button html\n */\nfunction parent_permalink_button( $post_id = 0 ){\n    global $post, $wpdb;\n\n    if( $post_id == 0 )\n        $post_id = $post->ID;\n\n    $parent_grouped_id = 0;\n\n    // The SQL query\n    $results = $wpdb->get_results( "\n        SELECT pm.meta_value as child_ids, pm.post_id\n        FROM {$wpdb->prefix}postmeta as pm\n        INNER JOIN {$wpdb->prefix}posts as p ON pm.post_id = p.ID\n        INNER JOIN {$wpdb->prefix}term_relationships as tr ON pm.post_id = tr.object_id\n        INNER JOIN {$wpdb->prefix}terms as t ON tr.term_taxonomy_id = t.term_id\n        WHERE p.post_type LIKE \'product\'\n        AND p.post_status LIKE \'publish\'\n        AND t.slug LIKE \'grouped\'\n        AND pm.meta_key LIKE \'_children\'\n        ORDER BY p.ID\n    " );\n\n    // Retreiving the parent grouped product ID\n    foreach( $results as $result ){\n        foreach( maybe_unserialize( $result->child_ids ) as $child_id )\n            if( $child_id == $post_id ){\n                $parent_grouped_id = $result->post_id;\n                break;\n            }\n        if( $parent_grouped_id != 0 ) break;\n    }\n    if( $parent_grouped_id != 0 ){\n        echo \'<a class="button" href="\'.get_permalink( $parent_grouped_id ).\'">Link to Parent</a>\';\n    } \n    // Optional empty button link when no grouped parent is found\n    else {\n        echo \'<a class="button" style="color:grey">No Parent found</a>\';\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码位于活动子主题(或主题)的 function.php 文件中或任何插件文件中。

\n\n

经过测试并可在 WooCommerce 3+ 中使用

\n\n
\n\n

用法(2例)

\n\n

1) 不使用可选参数,$post_id例如直接在产品模板中使用:

\n\n
parent_permalink_button();\n
Run Code Online (Sandbox Code Playgroud)\n\n

2)到处使用该函数,定义它的参数$post_id

\n\n
$product_id = 37; // the product ID is defined here or dynamically\xe2\x80\xa6\nparent_permalink_button( $product_id );\n
Run Code Online (Sandbox Code Playgroud)\n