为WooCommerce商店中的每个类别或部门创建博客

最终产品图片
您将要创造的

如果您经营的WooCommerce商店也有博客,那么您可以决定将博客与商店完全分开,并保留其类别和内容。 但是,为了与商店进行更好的集成,最好创建与您的产品类别相关的博客文章。

为此,您需要将产品类别分类法添加到常规帖子中,使用这些产品类别创建一些帖子,然后在商店中的产品类别存档页面上显示博客帖子。

因此,让我们开始吧!

您需要什么

要继续进行,您需要:

  • WordPress的开发安装
  • 代码编辑器
  • WooCommerce已安装并激活
  • 添加到商店的产品(我已经导入了WooCommerce随附的虚拟产品数据-有关如何执行此操作的详细信息,请参阅本指南
  • 激活了与WooCommerce兼容的主题(我正在使用Storefront

这是我的起始商店:

WooCommerce商店-主页

创建我们的插件

我将创建一个插件来执行此操作,这是比将其添加到主题中更好的做法。 因此,首先在wp-content / plugins目录中创建一个文件。 我将其称为mine tutsplus-woocommerce-category-blog.php

打开新文件并添加以下几行:

<?php
/**
 * Plugin Name: Tuts+ Add blog posts to WooCommerce product categories
 * Plugin URI: https://tutsplus.com
 * Description: Add a list of relevant blog posts to product category archives in WooCommerce
 * Version: 1.0
 * Author: Rachel McCollin
 * Author URI: http://rachelmccollin.co.uk
 * Textdomain: tutsplus
 *
/

编辑上面的代码以反映这是您的插件,然后保存您的插件文件。 现在激活您网站上的插件。

检查WooCommerce是否已激活

如果WooCommerce未在此站点上激活,我不希望该插件中的任何代码运行。 检查WooCommerce是否已激活的最佳方法是检查woocommerce过滤器是否存在。 如果是这样,我将在此处添加所有的add_action()调用,这将触发插件中的所有功能。

将此添加到您的插件:

function tutsplus_check_woocommerce_active() {
     
    // check if woocommerce is activated
    if ( class_exists( 'woocommerce' ) ) {
 
        add_action( 'init', 'tutsplus_register_productcats_posts' );
        add_filter( 'woocommerce_taxonomy_args_product_cat', 'tutsplus_change_productcat_label' );
        add_action( 'woocommerce_after_main_content', 'tutsplus_display_productcats_posts' );
 
    }
	
    else {
        return;
	}

}
add_action( 'plugins_loaded', 'tutsplus_check_woocommerce_active' );

在帖子中添加产品类别

下一步是注册product_cat对于分类post职位类型。 使用register taxonomy for object type()函数的register taxonomy for object type()执行此操作。

将此添加到您的插件:

function tutsplus_register_productcats_posts() {
     
	 register_taxonomy_for_object_type( 'product_cat', 'post' );
	 
}

这会将WooCommerce用于产品类别的product_cat分类法添加到博客帖子中。 请注意,我还没有将其挂接到动作上,因为在检查WooCommerce时已经完成了。

现在,如果您查看管理屏幕,您将看到针对类别的帖子有两个分类法:

职位的两类分类法

这有点令人困惑,所以让我们更改管理菜单中用于产品类别的标签。 WooCommerce给我们提供了一个过滤器,称为woocommerce_taxonomy_args_product_cat

因此,将以下功能添加到您的插件中:

function tutsplus_change_productcat_label( $args ) {
    
	$args['labels'] = array(
        'label'         => _x( 'Product Categories', 'tutsplus' ),
        'menu_name'     => _x( 'Product Categories', 'Admin menu name', 'tutsplus' ),
        'add_new_item'  => _x( 'Add new product category', 'tutsplus' ),
	);

	return $args;

}

这会将菜单中的product_cat分类法名称更改为Product Categories

刷新您的管理屏幕并进行检查:

在管理菜单中正确标记的产品类别

这应该减少一些混乱(尽管您会发现它不能完全删除它,因为不可能在Quick Edit中更改标签,我们将在不久后使用它)。

注意:您可能决定改为删除标准类别分类法。 在这种情况下,请使用 register_taxonomy() 函数将其注册为空的帖子类型数组,从而有效地将其删除。

现在,添加帖子时,可以为其分配产品类别。 执行此操作的方式取决于您的站点是否使用Gutenberg编辑器,因为WooCommerce产品类别尚不适用于Gutenberg。

如果启用了Gutenberg,则必须使用“主帖子”屏幕上帖子名称下方的“ 快速编辑”链接添加产品类别:

在快速编辑中添加产品类别

确保您不要混淆这里称为“ 类别”的两个分类法-在“快速编辑”中无法重命名产品类别。

如果您使用的是经典编辑器,则可以使用帖子编辑屏幕将产品类别添加到帖子中:

将产品类别添加到后经典编辑器

随着时间的流逝,WooCommerce可能会与Gutenberg兼容,并且这种情况将会改变。

现在创建一些帖子,并为他们提供不同的产品类别。

在产品类别归档中输出帖子

第二步是在产品类别档案中输出这些帖子。 为此,您可以使用WP_Query创建一个循环,然后使用woocommerce_after_shop_loop操作挂钩,WooCommerce在存档页面上输出产品后将运行该挂钩。

如果您想查看该钩子,请查看WooCommerce中的templates/archive-product.php文件。 如果愿意,您可能希望使用其他钩子将博客文章输出到其他位置。

设置功能

在插件文件中创建一个新函数,并确保它具有您在之前将其挂钩到woocommerce_after_shop_loop挂钩时使用的名称:

function tutsplus_display_productcats_posts() {
    
}

现在,让我们填充该函数。

检查我们是否在产品类别存档中

首先,添加条件标签以检查我们是否在产品类别归档中,因为您不希望博客文章显示在主商店页面或搜索页面上。 在函数内部,添加以下内容:

if ( is_product_category() ) {

}

现在,您的代码将仅在产品类别存档页面上运行。

识别当前产品类别

接下来,在条件检查的括号内,添加一行以获取当前查询的对象,即当前产品类别:

$productcat = get_queried_object();

现在,我们可以在设置查询参数时使用该变量。 接下来,添加以下内容:

$args = array(
	'post_type' => 'post',
	'product_cat' => $productcat->slug,
	'posts_per_page' => 5
);
$query = new WP_query ( $args );
if ( $query->have_posts() ) { ?>
        
<?php }

这定义了我们的查询参数,运行查询,并检查它是否有任何帖子。 接下来,我们需要在该if语句内添加一个循环:

<section class="productcat-posts">
    <?php echo '<h2>' . esc_html__( 'Blog Posts', 'tutsplus' ) . '</h2>'; ?>

		<?php while ( $query->have_posts() ) : $query->the_post(); ?>

		<?php //contents of loop ?>
		<article id="post-<?php the_ID(); ?>"<?php post_class(); ?>>
		
			<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
			<?php the_excerpt(); ?>
            <a href="<?php the_permalink(); ?>"> Read More...</a>
		
		</article>

		<?php endwhile; ?>

	<?php wp_reset_postdata(); ?>
	
</section>

这将打开一个新的section标签,并在article标签内输出博客文章。 确保最后使用wp_reset_postdata()重置查询。

这是您的全部功能,如下所示:

function tutsplus_display_posts_in_category_archives() {
    
	if ( is_product_category() ) {
		
		$productcat = get_queried_object();
		
		$args = array(
			'post_type' => 'post',
			'product_cat' => $productcat->slug,
			'posts_per_page' => 5
		);
		$query = new WP_query ( $args );
		if ( $query->have_posts() ) { ?>
		
			<section class="productcat-posts">
				<h2>Blog Posts</h2>
			
					<?php while ( $query->have_posts() ) : $query->the_post(); ?>
			
					<?php //contents of loop ?>
					<article id="post-<?php the_ID(); ?>"<?php post_class(); ?>>
					
						<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
						<?php the_excerpt(); ?>
                        <a href="<?php the_permalink(); ?>"> Read More...</a>
					
					</article>
			
					<?php endwhile; ?>
			
				<?php rewind_posts(); ?>
				
			</section>
		  
		<?php }
		
	}
}
add_action( 'woocommerce_after_shop_loop', 'tutsplus_display_posts_in_category_archives' );

现在保存您的插件文件,并在存档页面中查看添加了帖子的产品类别。 在我的服装类别档案库中,如果我向下滚动浏览产品,则会显示我的帖子:

显示在类别存档页面上的博客文章

现在,您可以在其存档页面上显示有关该产品类别的最新博客文章。

摘要

与商店的各个部门集成的博客可以帮助您销售更多产品,并使博客与客户更相关。 在本教程中,您学习了如何将博客文章添加到类别存档页面,从而为客户提供额外的内容。

翻译自: https://code.tutsplus.com/tutorials/create-a-blog-for-each-category-or-department-in-your-woocommerce-store--cms-26154

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值