Taxonomy question

时间:2018-04-03 作者:Planetdune

我的php非常有限。我编辑现有的东西以使其工作,通常可以或多或少地理解代码在做什么,但我自己无法编写代码。

我会尽力解释我的情况。

我有一个Woocommerce插件,它将产品显示为列表(在表中),而不是单独的框。此表有一个单元格,用于表示产品的“名称”。我希望在每行的每个名称下的第二行显示分类法的内容。

假设现在是(3列/行):

第1行:名称1 |评级|添加到购物车按钮第2行:名称2 |评级|添加到购物车按钮

我希望它是:

行1:名称1 |评级|添加到购物车按钮分类国家/地区||

第2行:名称2 |评级|添加到购物车按钮分类国家/地区||

几年前,我在一个自定义字段中使用了这行代码(在另一个插件中,省是自定义字段):。get\\u post\\u meta(get\\u the\\u ID(),“Province”,true)。

现在,有了一个新插件,它可以做同样的事情,但要好得多,我也想做同样的事情,但这次是用分类法,而不是自定义字段。(这允许我根据分类法设置过滤器,而我无法使用自定义字段)

我找到了php文件,并在“名称单元格”中搜索和显示内容的位置。用一个简单的“test”字符串进行了测试,结果显示了“test”,正如我所希望的那样,它是每个名称单元格的第二行。然后,我更改了新插件的代码并添加了我的旧代码(get\\u post\\u meta(get\\u the\\u ID(),\'Province\',true)。部分)而不是测试字符串,并且再次运行良好。。将每行自定义字段的内容显示为名称单元格中的第二行。。。

现在,我使用一个插件添加了一个自定义分类法,称之为“country”,并编辑了我的所有产品,以在新的分类法中获得正确的数据。

剩下的就是更改该行,以便它读取分类法而不是自定义字段。这就是我被困的地方。。。

这是自定义字段的完整代码(工作正常)。

private function get_product_name( $product ) {
    $name = wcpt_get_name( $product ) . \'</br><i>\' . get_post_meta( get_the_ID(), \'Province\', true ) . \'</i></td>\';
    if ( array_intersect( array( \'all\', \'name\' ), $this->args->links ) ) {
        $name = WCPT_Util::format_product_link( $product, $name );
    }
    return apply_filters( \'wc_product_table_data_name\', $name, $product );
}
如何从其中的分类法中获取值,而不是从自定义字段中获取值?

非常感谢。

1 个回复
SO网友:dawoodman71

简单的回答是使用以下方法获取分类术语:

wp_get_post_terms( $post->ID, \'yourTaxonomyName\' );
这将返回WP Term对象的数组。以下是如何获得第一个学期名称:

$terms = wp_get_post_terms( $post->ID, \'yourTaxonomyName\' );
$first_term_name = $terms[0]->name;
您可以在WordPress Codex中了解有关此方法的更多信息:https://codex.wordpress.org/Function_Reference/wp_get_post_terms

希望这有帮助:)

更新日期:

private function get_product_name( $product ) {
    // Get all the country terms associated with $product.
    $terms = wp_get_post_terms($product->ID, \'country\');

    // Set the empty $country string.
    $country = \'\';

    // Check if there are country terms available.
    if($terms){

        // If there are terms then use the first one to populate the $country variable. 
        $country = \'</br><i>\' . $terms[0]->name . \'</i>\';
    }
    // Add $country to the $name variable.
    $name = wcpt_get_name( $product ) . $country . \'</td>\';

    // This part could rewrite $name which would remove $country.
    if ( array_intersect( [ \'all\', \'name\' ], $this->args->links ) ) {
        $name = WCPT_Util::format_product_link( $product, $name );
    }

    return apply_filters( \'wc_product_table_data_name\', $name, $product );
}

结束

相关推荐

WordPress Plugins won't save

我有一个WordPress网站,我刚刚接管了一个客户,因此我没有能力与以前的网站管理员/开发人员交谈。该网站使用的是YOOtheme对Subway稍加修改的版本。为了更新插件位置,Subway的一部分有“小部件选项”。我无法更改外观或小部件显示的页面,因为我无法保存任何内容。它看起来像已保存,但没有保存,或者您会在保存按钮旁边看到“加载循环”,它一直在运行。Things to note:<WordPress和插件是最新的。在我们转移到新服务器之前,插件是可更新的。新服务器有一个max\\u inpu