php - 带有 PHP 代码的 Wordpress Woocommerce 建议

标签 php wordpress

我正在使用 woo commerece 插件,我希望在每个产品的标题下有一个子标题。 样式和格式已排序,但我希望在子标题部分显示特定类别。我已经设法显示所有类别,但我想将其缩小到父类别下的一个类别。 下面是我正在使用的代码,任何人都可以建议我如何实现显示在父类别下选择的任何子类别。 谢谢

<?php
/**
 * Single Product title
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

global $post, $product;

$cat_count = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
?>

<h1 itemprop="name" class="product_title entry-title"><?php the_title(); ?></h1>

<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Artist:', 'Artist:', $cat_count, 'woocommerce' ) . ' ', '.</span>' ); ?>

结果是这样的:

Array ( [0] => stdClass Object ( [term_id] => 59 [name] => Colourful [slug] => colourful [term_group] => 0 [term_taxonomy_id] => 59 [taxonomy] => product_cat [description] => [parent] => 115 [count] => 21 [filter] => raw ) [1] => stdClass Object ( [term_id] => 96 [name] => Karen Grant [slug] => karen-grant [term_group] => 0 [term_taxonomy_id] => 96 [taxonomy] => product_cat [description] => [parent] => 90 [count] => 5 [filter] => raw ) [2] => stdClass Object ( [term_id] => 69 [name] => Landscapes [slug] => landscapes [term_group] => 0 [term_taxonomy_id] => 69 [taxonomy] => product_cat [description] => [parent] => 115 [count] => 35 [filter] => raw ) [3] => stdClass Object ( [term_id] => 71 [name] => Nature [slug] => nature [term_group] => 0 [term_taxonomy_id] => 71 [taxonomy] => product_cat [description] => [parent] => 115 [count] => 20 [filter] => raw ) )

<?php

/**
 * Single Product title
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly


global $post, $product;

$cat_count = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
?>


<h1 itemprop="name" class="product_title entry-title"><?php the_title(); ?></h1>

<?php 


    global $post, $product;

    $cat_array = array();
    $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details

    foreach($term_list as $cat_list)
    {

        array_push($cat_array, $cat_list->term_id);

    }

    $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array

   $termchildren = get_term_children( '90' , 'product_cat' ); //New Line in Updattion -1

   $final_result = array_intersect($cat_array,$termchildren); print_r($final_result);

    $new_cat_id = $final_result[0];

    $cat_url = get_term_link ($new_cat_id, 'product_cat'); //get link of parent ID

    $term = get_term( $new_cat_id, 'product_cat' ); //Get Name of the parent from the parent ID

    $name = $term->name; //Store it into an varialbe

    echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>";
?>

'

最佳答案

试试这个:

<?php 

    global $post, $product;

    $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details

    $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array

    $cat_url = get_term_link ($cat_id, 'product_cat'); //get link of parent ID

    $term = get_term( $cat_id, 'product_cat' ); //Get Name of the parent from the parent ID

    $name = $term->name; //Store it into an varialbe

    echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>";

?>

记住:

WooCommerce 中,产品类​​别不是普通类别,它们是专门为产品创建的自定义分类法这只是标记为“类别”

如果您有任何疑问,请告诉我。

更新:

    <?php 

        global $post, $product;

        $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details

        $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array

       $termchildren = get_term_children( '90' , 'product_cat' ); //New Line in Updattion -1

        $new_cat_id = $termchildren[2];

        $cat_url = get_term_link ($new_cat_id, 'product_cat'); //get link of parent ID

        $term = get_term( $new_cat_id, 'product_cat' ); //Get Name of the parent from the parent ID

        $name = $term->name; //Store it into an varialbe

        echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>";

    ?>

新更新(2015 年 1 月 2 日)

    <?php 

        global $post, $product;

        $cat_array = array();
        $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details

        foreach($term_list as $cat_list)
        {

            array_push($cat_array, $cat_list->term_id);

        }

        $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array

       $termchildren = get_term_children( '90' , 'product_cat' ); //New Line in Updattion -1

       $final_result = array_intersect($cat_array,$termchildren);

       $final_cat_result = array_values($final_result);

        $new_cat_id = $final_cat_result[0];

        $cat_url = get_term_link ($new_cat_id, 'product_cat'); //get link of parent ID

        $term = get_term( $new_cat_id, 'product_cat' ); //Get Name of the parent from the parent ID

        $name = $term->name; //Store it into an varialbe

        echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>";
    ?>

Line : 1 $post$product 都是全局变量。所以在术语中使用在其他文件中,我们需要在使用前将其添加到我们的文件中。

Line : 2 一个空白数组,存放当前商品的所有分类**,以后会用到。

第 3 行 wp_get_post_terms用于检索帖子的条款(对于 woocommerce 其产品类别)。所以现在我们有一个包含所有条款详细信息的数组,包括 ID、name

第 4 行 用于遍历上面生成的数组。我们将遍历一个数组并查找 term_id。我们将使用 array_push为了存储所有术语 ID 和存储,我们将使用第 2 行中的空白数组。所以现在我们有一个 term_id 数组。

第 9 行 现在我们将使用 get_term_children检索 Artist 的子术语,因为我们知道艺术家 term ID 及其固定值。它将提供一个数组 作为输出。

第 10 行 array_intersect用于匹配两个数组并仅获取匹配值。(基本上我们正在查看当前产品类别和所有艺术家类别以仅取出匹配类别)。

第 11 行 array_values对重新索引数组很有用。(通过添加这一行,我们解决了即将到来的错误:))

第 12 行 现在我们有一个数组,它只有 一个 值,即艺术家的 term ID。(就是这样。现在你只需要从该术语 ID 中获取艺术家的姓名和链接)

第 13 行获取艺术家的链接。

第 15 行 从第 14 行生成的数组中获取艺术家的姓名并将其存储在变量中。

第 16 行打印所需的内容,我们就完成了!

关于php - 带有 PHP 代码的 Wordpress Woocommerce 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712678/

相关文章:

wordpress - 有什么方法可以覆盖我的functions.php 中的get_stock_quantity?

php - 验证后为什么我的选择标签数据被清除

CSS - 无法更改 DIV 的背景颜色 - WooCommerce 产品描述

php - Apple Push 服务长时间无法连接。我这边什么都没有改变

php - Internet Explorer 无法从 PHP/jQuery 刷新

html - 将 div 置于页脚 div 内居中

html - 编辑 main.css 时更改页脚背景颜色不起作用

javascript - 我可以使用 JavaScript 在视频标记中添加或删除属性吗?

php - 在 laravel eloquent 中处理映射表

php - 如何使用 ajax、php 和 html 将一个下拉列表填充到另一个下拉列表中