Home » Php » php – Adding product categories and tags to Woocommerce RSS feed

php – Adding product categories and tags to Woocommerce RSS feed

Posted by: admin February 25, 2020 Leave a comment

Questions:

Hi I am trying to add the categories and tags to the RSS feed of my Woocommerce shop. The regular WordPress site RSS feed includes them but they are excluded from the shop feed. I am thinking this part of the wp_includes/feed.php file needs editing to solve this, but I’m not sure how.

function get_the_category_rss( $type = null ) {
if ( empty( $type ) ) {
    $type = get_default_feed();
}
$categories = get_the_category();
$tags       = get_the_tags();
$the_list   = '';
$cat_names  = array();

$filter = 'rss';
if ( 'atom' == $type ) {
    $filter = 'raw';
}

if ( ! empty( $categories ) ) {
    foreach ( (array) $categories as $category ) {
        $cat_names[] = sanitize_term_field( 'name', $category->name, $category->term_id, 'category', $filter );
    }
}

if ( ! empty( $tags ) ) {
    foreach ( (array) $tags as $tag ) {
        $cat_names[] = sanitize_term_field( 'name', $tag->name, $tag->term_id, 'post_tag', $filter );
    }
}

$cat_names = array_unique( $cat_names );

foreach ( $cat_names as $cat_name ) {
    if ( 'rdf' == $type ) {
        $the_list .= "\t\t<dc:subject><![CDATA[$cat_name]]></dc:subject>\n";
    } elseif ( 'atom' == $type ) {
        $the_list .= sprintf( '<category scheme="%1$s" term="%2$s" />', esc_attr( get_bloginfo_rss( 'url' ) ), esc_attr( $cat_name ) );
    } else {
        $the_list .= "\t\t<category><![CDATA[" . html_entity_decode( $cat_name, ENT_COMPAT, get_option( 'blog_charset' ) ) . "]]></category>\n";
    }
}

/**
 * Filters all of the post categories for display in a feed.
 *
 * @since 1.2.0
 *
 * @param string $the_list All of the RSS post categories.
 * @param string $type     Type of feed. Possible values include 'rss2', 'atom'.
 *                         Default 'rss2'.
 */
return apply_filters( 'the_category_rss', $the_list, $type );
}

/**
 * Display the post categories in the feed.
 *
 * @since 0.71
 * @see get_the_category_rss() For better explanation.
 *
 * @param string $type Optional, default is the type returned by get_default_feed().
 */
function the_category_rss( $type = null ) {
    echo get_the_category_rss( $type );
}
How to&Answers: