php 在Woocommerce单个产品页面中显示自定义分类

o4hqfura  于 2023-03-21  发布在  PHP
关注(0)|答案(2)|浏览(118)

我在Woocommerce中添加了一个名为“Vendor”的新分类,代码如下:

// hook into the init action and call taxonomy when it fires

add_action( 'init', 'create_vendor_taxonomy', 0 );

// create and register vendor taxonomy (hierarchical)

function create_vendor_taxonomy() {

    $labels = array(
        'name'              => _x( 'Vendors', 'taxonomy general name', 'textdomain' ),
        'singular_name'     => _x( 'Vendor', 'taxonomy singular name', 'textdomain' ),
        'search_items'      => __( 'Search Vendors', 'textdomain' ),
        'all_items'         => __( 'All Vendors', 'textdomain' ),
        'parent_item'       => __( 'Parent Vendor', 'textdomain' ),
        'parent_item_colon' => __( 'Parent Vendor:', 'textdomain' ),
        'edit_item'         => __( 'Edit Vendor', 'textdomain' ),
        'update_item'       => __( 'Update Vendor', 'textdomain' ),
        'add_new_item'      => __( 'Add New Vendor', 'textdomain' ),
        'new_item_name'     => __( 'New Vendor Name', 'textdomain' ),
        'menu_name'         => __( 'Vendors', 'textdomain' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'vendor' ),
    );

    register_taxonomy( 'vendor', array( 'product' ), $args );

}

我想在单个产品页面上显示的Category和Tags标签之间插入这个新的分类法。
我有一个孩子的主题,并了解我必须创建一个woocommerce文件夹中的孩子,然后添加到该文件夹的副本,我必须编辑的woo模板文件。
有人能帮帮我吗?
1.我必须编辑哪些woo模板文件?
1.需要向这些文件中添加什么代码才能将新的分类法插入到产品页面中?
提前感谢您的任何帮助。

**更新:**经过进一步研究,我似乎不需要编辑Woo模板文件。

在单个产品页面上的分类和标签 meta下面有一个钩子。
因此,我可以插入Vendor taxonomy详细信息,如下所示:

add_action( 'woocommerce_product_meta_end', 'insert_vendor_custom_action', 5 );

function insert_vendor_custom_action() {
    global $product;
    if [WHAT DO I NEED HERE?]
    echo [WHAT DO I NEED HERE?];
}

感谢任何能帮助我的人。

but5z9lq

but5z9lq1#

要在Woocommerce单一产品页面的 meta部分显示自定义分类术语的帖子术语,您不需要覆盖任何Woocommerce模板。
相反,您可以通过以下方式使用特定的专用操作钩子:

add_action( 'woocommerce_product_meta_end', 'action_product_meta_end' );
function action_product_meta_end() {
    global $product;

    $taxonomy = 'vendor'; // <== Here set your custom taxonomy

    if( ! taxonomy_exists( string $taxonomy ) ) 
        return; // exit
    
    $term_ids = wp_get_post_terms( $product->get_id(), $taxonomy, array('fields' => 'ids') );

    if ( ! empty($term_ids) ) {
        echo get_the_term_list( $product->get_id(), 'vendor', '<span class="posted_in">' . _n( 'Vendor:', 'Vendors:', count( $term_ids ), 'woocommerce' ) . ' ', ', ', '</span>' );
    }
}
  • 代码放在你的活动子主题(或活动主题)的function.php文件中。* 测试和工作。
a1o7rhls

a1o7rhls2#

保留string $taxonomy将导致一个php错误,可以通过删除string来修复,并保留代码为if( ! taxonomy_exists( $taxonomy ) )将解决该问题

相关问题