带有PHP代码的WordPress Woocommerce建议

WordPress Woocommerce Advice with PHP code

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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(); ?>

<?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 ) )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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(); ?>

<?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:".$name."";
?>

'


试试这个 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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:".$name."";

?>

请记住:

WooCommerce中,产品类??别不是常规类别,它们是专门为仅标记为"类别"的产品而创建的自定义分类法。

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

更新:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    <?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:".$name."";

    ?>

新更新(2015年1月2日)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    <?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:".$name."";
    ?>

Line:1 $post$product都是全局变量。因此,要在其他文件中使用它,我们需要在使用它之前在文件中添加它。

第2行:一个空白数组,用于存储当前产品的所有类别**。我们将在以后使用它。

第3行:wp_get_post_terms用于检索帖子的术语(对于woocommerce其产品类别)。因此,现在我们有了一个数组,其中包含ID, name等术语的所有详细信息,等等

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

第9行:现在我们将使用get_term_children检索Artist的子项,因为我们知道artist term ID及其固定项,它将给出一个数组作为输出。

Line:10 array_intersect对于匹配两个数组并仅提取匹配值很有用(基本上,我们正在查看当前产品类别和所有艺术家类别,仅提取匹配类别)。

Line:11 array_values对于重新索引数组很有用。(通过添加此行,我们解决了即将出现的错误:))

第12行:现在我们有了一个数组,该数组只有一个值是歌手的term ID。(就是这样,现在您只需要从该术语ID中获取歌手的姓名和链接)

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

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

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