在Woocommerce中将附加文本添加到产品类别页面

时间:2014-11-17 11:11:58

标签: php woocommerce

Woocommerce有产品类别页面。它们就像wordpress常规类别页面一样,但对于产品而不是帖子。

在产品类别编辑器中,有一个描述框,您可以在其中添加文本。查看该产品类别页面时,文本将显示在类别页面标题下方。

我正在努力寻找一种方法来在产品下面添加内容。基本上我想在产品类别页面下面有一篇1000字的文章用于SEO目的。

但是,我无法弄清楚如何做到这一点。

2 个答案:

答案 0 :(得分:0)

有无数种方法可以实现这一目标。一种方法是override the archive-product.php template,并在那里包含内容。

一般步骤如下:

  1. 在主题根目录中创建/woocommerce/目录
  2. archive-product.php 模板从/plugins/woocommerce/templates/复制到新创建的文件夹。
  3. 编辑并保存复制的文件。
  4. the WooCommerce docs中了解有关模板覆盖的详情。

答案 1 :(得分:0)

要在产品下方的类别页面上显示文本,您需要将此代码添加到文件wp-includes / functions.php的开头,代码“ mysql2date($格式,$ date,$ translate = true) ){“

    add_action( 'init', 'wpm_product_cat_register_meta' );
/**
 * Register details product_cat meta.
 *
 * Register the details metabox for WooCommerce product categories.
 *
 */
function wpm_product_cat_register_meta() {
    register_meta( 'term', 'details', 'wpm_sanitize_details' );
}
/**
 * Sanitize the details custom meta field.
 *
 * @param  string $details The existing details field.
 * @return string          The sanitized details field
 */
function wpm_sanitize_details( $details ) {
    return wp_kses_post( $details );
}


add_action( 'product_cat_add_form_fields', 'wpm_product_cat_add_details_meta' );
/**
 * Add a details metabox to the Add New Product Category page.
 *
 * For adding a details metabox to the WordPress admin when
 * creating new product categories in WooCommerce.
 *
 */
function wpm_product_cat_add_details_meta() {
    wp_nonce_field( basename( __FILE__ ), 'wpm_product_cat_details_nonce' );
    ?>
    <div class="form-field">
        <label for="wpm-product-cat-details"><?php esc_html_e( 'Details', 'wpm' ); ?></label>
        <textarea name="wpm-product-cat-details" id="wpm-product-cat-details" rows="5" cols="40"></textarea>
        <p class="description"><?php esc_html_e( 'Detailed category info to appear below the product list', 'wpm' ); ?></p>
    </div>
    <?php
}


add_action( 'product_cat_edit_form_fields', 'wpm_product_cat_edit_details_meta' );
/**
 * Add a details metabox to the Edit Product Category page.
 *
 * For adding a details metabox to the WordPress admin when
 * editing an existing product category in WooCommerce.
 *
 * @param  object $term The existing term object.
 */
function wpm_product_cat_edit_details_meta( $term ) {
    $product_cat_details = get_term_meta( $term->term_id, 'details', true );
    if ( ! $product_cat_details ) {
        $product_cat_details = '';
    }
    $settings = array( 'textarea_name' => 'wpm-product-cat-details' );
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="wpm-product-cat-details"><?php esc_html_e( 'Details', 'wpm' ); ?></label></th>
        <td>
            <?php wp_nonce_field( basename( __FILE__ ), 'wpm_product_cat_details_nonce' ); ?>
            <?php wp_editor( wpm_sanitize_details( $product_cat_details ), 'product_cat_details', $settings ); ?>
            <p class="description"><?php esc_html_e( 'Detailed category info to appear below the product list','wpm' ); ?></p>
        </td>
    </tr>
    <?php
}

add_action( 'create_product_cat', 'wpm_product_cat_details_meta_save' );
add_action( 'edit_product_cat', 'wpm_product_cat_details_meta_save' );
/**
 * Save Product Category details meta.
 *
 * Save the product_cat details meta POSTed from the
 * edit product_cat page or the add product_cat page.
 *
 * @param  int $term_id The term ID of the term to update.
 */
function wpm_product_cat_details_meta_save( $term_id ) {
    if ( ! isset( $_POST['wpm_product_cat_details_nonce'] ) || ! wp_verify_nonce( $_POST['wpm_product_cat_details_nonce'], basename( __FILE__ ) ) ) {
        return;
    }
    $old_details = get_term_meta( $term_id, 'details', true );
    $new_details = isset( $_POST['wpm-product-cat-details'] ) ? $_POST['wpm-product-cat-details'] : '';
    if ( $old_details && '' === $new_details ) {
        delete_term_meta( $term_id, 'details' );
    } else if ( $old_details !== $new_details ) {
        update_term_meta(
            $term_id,
            'details',
            wpm_sanitize_details( $new_details )
        );
    }
}

add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_display_details_meta' );
/**
 * Display details meta on Product Category archives.
 *
 */
function wpm_product_cat_display_details_meta() {
    if ( ! is_tax( 'product_cat' ) ) {
        return;
    }
    $t_id = get_queried_object()->term_id;
    $details = get_term_meta( $t_id, 'details', true );
    if ( '' !== $details ) {
        ?>
        <div class="product-cat-details">
            <?php echo apply_filters( 'the_content', wp_kses_post( $details ) ); ?>
        </div>
        <?php
    }
}

您将在类别属性中获得一个名为“详细信息”的附加字段。在此处添加您的文章,您将在“类别”页面上的产品列表下方获得文本。这将适用于每个类别。