PHPackages                             wow/codeable-etsy-product - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wow/codeable-etsy-product

ActiveWoocommerce-plugin[Utility &amp; Helpers](/categories/utility)

wow/codeable-etsy-product
=========================

A Custom Etsy Product Type for WooCommerce

061[1 issues](https://github.com/SnakeO/codeable-etsy-product/issues)PHP

Since Dec 30Pushed 6mo ago1 watchersCompare

[ Source](https://github.com/SnakeO/codeable-etsy-product)[ Packagist](https://packagist.org/packages/wow/codeable-etsy-product)[ RSS](/packages/wow-codeable-etsy-product/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

WooCommerce Etsy Product
========================

[](#woocommerce-etsy-product)

A WooCommerce plugin that creates a custom product type for displaying Etsy shop listings directly in your WooCommerce store. Products automatically sync their title, description, images, and pricing from Etsy.

Features
--------

[](#features)

- **New Product Type**: Adds "Etsy Product" to WooCommerce's product type selector
- **Automatic Data Sync**: Pulls product title, description, images, and pricing directly from Etsy
- **Configurable Caching**: Cache Etsy data for optimal performance (1 minute to 1 day)
- **Responsive Images**: Multiple image sizes for optimal display across devices
- **Direct Etsy Linking**: "View On Etsy" button directs customers to purchase on Etsy
- **Internationalization**: Translation-ready with Spanish (es\_ES) included

Requirements
------------

[](#requirements)

- WordPress 4.0+
- WooCommerce 2.6+
- PHP 5.6+
- Etsy API Key (get one at [Etsy Developer Portal](https://www.etsy.com/developers/register))

Installation
------------

[](#installation)

### Via Composer

[](#via-composer)

```
composer require wow/woo-etsy-product
```

### Manual Installation

[](#manual-installation)

1. Download or clone this repository
2. Upload the `woo-etsy-product` folder to `/wp-content/plugins/`
3. Activate the plugin through the **Plugins** menu in WordPress
4. Ensure WooCommerce is installed and activated

[![Plugin Screen](https://camo.githubusercontent.com/78b78eb7755b1704ccb819566c7bebcf713600cb2d44a4d5f5922e1238220e7f/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f646f724a4b587a2e706e67)](https://camo.githubusercontent.com/78b78eb7755b1704ccb819566c7bebcf713600cb2d44a4d5f5922e1238220e7f/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f646f724a4b587a2e706e67)

Configuration
-------------

[](#configuration)

### Global Settings

[](#global-settings)

1. Navigate to **WooCommerce &gt; Settings &gt; Products**
2. Click on the **Etsy Product Settings** tab
3. Configure:
    - **Etsy API Key**: Your Etsy API key for authentication
    - **Etsy Shop Name**: Your Etsy shop name (e.g., `MyEtsyShop`)

[![Settings](https://camo.githubusercontent.com/81120866634622e1557e7f7bf752e5c3d530c3e4dce7d3f1367c4c739d88729b/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f6571554b4a43722e706e67)](https://camo.githubusercontent.com/81120866634622e1557e7f7bf752e5c3d530c3e4dce7d3f1367c4c739d88729b/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f6571554b4a43722e706e67)

### Creating an Etsy Product

[](#creating-an-etsy-product)

1. Go to **Products &gt; Add New**
2. In the **Product data** section, select **Etsy Product** from the dropdown

[![Products Screen](https://camo.githubusercontent.com/a2a0c409fcb4b199521feffb6ae039cec1d10e939002ab0fdea663d43c737ed8/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f746e417a784b742e706e67)](https://camo.githubusercontent.com/a2a0c409fcb4b199521feffb6ae039cec1d10e939002ab0fdea663d43c737ed8/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f746e417a784b742e706e67)

3. Click on the **Etsy Product** tab that appears
4. **Pick an Etsy Item**: Select your Etsy listing from the dropdown (populated from your shop)
5. **Cache for faster displaying**: Choose a cache duration for performance optimization

[![Etsy Product Options](https://camo.githubusercontent.com/1dbab446b352d34fe0e66c8424057d02ced1e955d274bfbe9040f2b22e7858c9/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f325955585450332e706e67)](https://camo.githubusercontent.com/1dbab446b352d34fe0e66c8424057d02ced1e955d274bfbe9040f2b22e7858c9/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f325955585450332e706e67)

6. Click **Publish** or **Update** - your product setup is complete!

The product title, description, images, and price will automatically be pulled from Etsy.

### Results

[](#results)

Your Etsy products will appear in your admin list view with the title, price, and picture:

[![Admin list view](https://camo.githubusercontent.com/eee840151372632886a742ab90addd063a5c75e79ba0f144d97e891d13e47245/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f516566616b62662e706e67)](https://camo.githubusercontent.com/eee840151372632886a742ab90addd063a5c75e79ba0f144d97e891d13e47245/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f516566616b62662e706e67)

On your website, products appear alongside other products in the grid view:

[![Website grid view](https://camo.githubusercontent.com/94232fc2355134352d799bb1b0fd9e67c1ef0e720f1132c7009c5f13d483bafa/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f3678734f4769722e706e67)](https://camo.githubusercontent.com/94232fc2355134352d799bb1b0fd9e67c1ef0e720f1132c7009c5f13d483bafa/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f3678734f4769722e706e67)

Full product details are available on the product page:

[![Product details](https://camo.githubusercontent.com/dd77c97de3b9dfa829ae1f37c624da4e94d89e78e18a19a874235d4ca26211a4/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f7164736a3834652e706e67)](https://camo.githubusercontent.com/dd77c97de3b9dfa829ae1f37c624da4e94d89e78e18a19a874235d4ca26211a4/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f7164736a3834652e706e67)

Caching Options
---------------

[](#caching-options)

OptionDurationUse CaseDon't cacheReal-timeTesting, frequently updated listings1 minute60 secondsHigh-traffic sites with frequent updates5 minutes5 minutesBalanced freshness and performance30 minutes30 minutesRecommended for most sites1 hour60 minutesStable listings, reduced API calls1 day24 hoursStatic listings, maximum performanceHow It Works
------------

[](#how-it-works)

### Architecture

[](#architecture)

The plugin consists of three main components:

1. **EtsyAPI** (`app/etsy/EtsyAPI.php`): Static utility class for making authenticated requests to the Etsy API v2 with built-in caching via WordPress transients.
2. **EtsyProductAdmin** (`app/admin/EtsyProductAdmin.php`): Handles admin-side functionality including settings pages and product configuration UI.
3. **EtsyProduct** (`app/frontend/EtsyProduct.php`): Extends `WC_Product` to intercept WordPress filters and inject Etsy data dynamically.

### Data Flow

[](#data-flow)

```
WooCommerce loads product
    ↓
WC_Product_Etsy instantiated
    ↓
Etsy listing ID retrieved from post meta
    ↓
Etsy API called (with caching)
    ↓
WordPress filters hijacked to inject Etsy data
    ↓
Product displayed with Etsy data

```

### Filter Hijacking

[](#filter-hijacking)

The plugin uses WordPress filters to seamlessly inject Etsy data:

- `the_title` - Returns Etsy listing title
- `the_content` - Returns Etsy listing description
- `get_post_metadata` - Intercepts price and thumbnail ID requests
- `wp_get_attachment_image_src` - Returns Etsy image URLs
- `wp_get_attachment_image_attributes` - Provides responsive image srcsets

File Structure
--------------

[](#file-structure)

```
woo-etsy-product/
├── woo-etsy-product.php         # Main plugin file
├── composer.json                 # Composer configuration
├── README.md                     # This file
├── UNLICENSE                     # License file
├── app/
│   ├── WC_Product_Etsy.php      # WooCommerce product type wrapper
│   ├── admin/
│   │   ├── EtsyProductAdmin.php # Admin functionality
│   │   └── views/
│   │       └── etsy-product-tab.php
│   ├── etsy/
│   │   └── EtsyAPI.php          # Etsy API wrapper
│   └── frontend/
│       ├── EtsyProduct.php      # Frontend product class
│       └── views/
│           └── add-to-cart-btn.php
├── languages/                    # Translation files
│   ├── woo-etsy-product.pot
│   ├── woo-etsy-product-es_ES.po
│   └── woo-etsy-product-es_ES.mo
└── vendor/                       # Composer dependencies

```

Localization
------------

[](#localization)

Translations are currently available in Spanish. The `/languages` directory contains the `.pot` file for further translating.

[![Spanish](https://camo.githubusercontent.com/b68198507f666118e2b3a7707b6a97bb1ad699be546882bb557aeae03cb84e61/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f4a534c557545412e706e67)](https://camo.githubusercontent.com/b68198507f666118e2b3a7707b6a97bb1ad699be546882bb557aeae03cb84e61/68747470733a2f2f776f772d73732e73332e616d617a6f6e6177732e636f6d2f4a534c557545412e706e67)

Frequently Asked Questions
--------------------------

[](#frequently-asked-questions)

### Can customers purchase directly through WooCommerce?

[](#can-customers-purchase-directly-through-woocommerce)

No. This plugin displays Etsy products in your WooCommerce catalog, but the "Add to Cart" button is replaced with a "View On Etsy" button that redirects customers to complete their purchase on Etsy.

### How often does the product data update?

[](#how-often-does-the-product-data-update)

Data freshness depends on your cache settings. With no caching, data is fetched in real-time. With maximum caching (1 day), data updates once per day.

### Can I display products from multiple Etsy shops?

[](#can-i-display-products-from-multiple-etsy-shops)

Currently, the plugin supports one Etsy shop per WordPress installation. All Etsy products pull from the configured shop.

### What happens if my Etsy API key expires?

[](#what-happens-if-my-etsy-api-key-expires)

Products will fail to display their Etsy data. Ensure your API key remains valid and update it in WooCommerce settings if needed.

### Does this affect my regular WooCommerce products?

[](#does-this-affect-my-regular-woocommerce-products)

No. The plugin only affects products with the "Etsy Product" type. All other product types work normally.

Changelog
---------

[](#changelog)

### 0.1

[](#01)

- Initial release
- Basic Etsy product integration
- Configurable caching
- Spanish translations

License
-------

[](#license)

This project is released under the [Unlicense](http://unlicense.org/), placing it in the public domain.

Author
------

[](#author)

**Jake Chapa**

- Website: [websitesonwheels.net](https://websitesonwheels.net/)
- Email:

Contributing
------------

[](#contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance47

Moderate activity, may be stable

Popularity5

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity13

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/134881229?v=4)[jakewow](/maintainers/jakewow)[@Jakewow](https://github.com/Jakewow)

---

Top Contributors

[![SnakeO](https://avatars.githubusercontent.com/u/136700?v=4)](https://github.com/SnakeO "SnakeO (4 commits)")

### Embed Badge

![Health badge](/badges/wow-codeable-etsy-product/health.svg)

```
[![Health](https://phpackages.com/badges/wow-codeable-etsy-product/health.svg)](https://phpackages.com/packages/wow-codeable-etsy-product)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
