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 更新,情况发生了变化。其实现在正好相反。分组产品有其_子项。
如何创建从单个产品到其分组的链接?它可以是更多分组产品的一部分,因此可以有多个链接(但我的商店不是这种情况)
谢谢米哈尔
可以通过以下方式为 WooCommerce 3+ 构建该函数:
\n (带有可选$post_id
参数)
/**\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用法:(2例)
\n\n1) 不使用可选参数,$post_id
例如直接在产品模板中使用:
parent_permalink_button();\n
Run Code Online (Sandbox Code Playgroud)\n\n2)到处使用该函数,定义它的参数$post_id
:
$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
归档时间: |
|
查看次数: |
1704 次 |
最近记录: |