You've already forked wc-composable-product
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dd5965ae4c | |||
| 9bc7a62f20 |
10
CHANGELOG.md
10
CHANGELOG.md
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.3.0] - 2026-03-01
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **Include Non-Public Products**: New option to include draft and private products in composable product selections
|
||||||
|
- Global setting under WooCommerce > Settings > Composable Products
|
||||||
|
- Per-product override in the Composable Options tab (Use global default / Yes / No)
|
||||||
|
- Useful when products should only be sold as part of a composition, not individually
|
||||||
|
- Translations for the new setting in all 6 locales (de_DE, de_CH, fr_CH, it_CH + informal variants)
|
||||||
|
|
||||||
## [1.2.1] - 2026-03-01
|
## [1.2.1] - 2026-03-01
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
335
composer.lock
generated
Normal file
335
composer.lock
generated
Normal file
@@ -0,0 +1,335 @@
|
|||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "1342d597ec95bd7abf806825a199cae0",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "symfony/deprecation-contracts",
|
||||||
|
"version": "v3.6.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||||
|
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
|
||||||
|
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=8.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"thanks": {
|
||||||
|
"url": "https://github.com/symfony/contracts",
|
||||||
|
"name": "symfony/contracts"
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "3.6-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"function.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nicolas Grekas",
|
||||||
|
"email": "p@tchwork.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A generic function and convention to trigger deprecation notices",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2024-09-25T14:21:43+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/polyfill-ctype",
|
||||||
|
"version": "v1.33.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
|
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
|
||||||
|
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.2"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"ext-ctype": "*"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-ctype": "For best performance"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"thanks": {
|
||||||
|
"url": "https://github.com/symfony/polyfill",
|
||||||
|
"name": "symfony/polyfill"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"bootstrap.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Polyfill\\Ctype\\": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Gert de Pagter",
|
||||||
|
"email": "BackEndTea@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony polyfill for ctype functions",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"compatibility",
|
||||||
|
"ctype",
|
||||||
|
"polyfill",
|
||||||
|
"portable"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/nicolas-grekas",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2024-09-09T11:45:10+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/polyfill-mbstring",
|
||||||
|
"version": "v1.33.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
|
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
|
||||||
|
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-iconv": "*",
|
||||||
|
"php": ">=7.2"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"ext-mbstring": "*"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-mbstring": "For best performance"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"thanks": {
|
||||||
|
"url": "https://github.com/symfony/polyfill",
|
||||||
|
"name": "symfony/polyfill"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"bootstrap.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nicolas Grekas",
|
||||||
|
"email": "p@tchwork.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony polyfill for the Mbstring extension",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"compatibility",
|
||||||
|
"mbstring",
|
||||||
|
"polyfill",
|
||||||
|
"portable",
|
||||||
|
"shim"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/nicolas-grekas",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2024-12-23T08:48:59+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "twig/twig",
|
||||||
|
"version": "v3.22.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/twigphp/Twig.git",
|
||||||
|
"reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/twigphp/Twig/zipball/946ddeafa3c9f4ce279d1f34051af041db0e16f2",
|
||||||
|
"reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=8.1.0",
|
||||||
|
"symfony/deprecation-contracts": "^2.5|^3",
|
||||||
|
"symfony/polyfill-ctype": "^1.8",
|
||||||
|
"symfony/polyfill-mbstring": "^1.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpstan/phpstan": "^2.0",
|
||||||
|
"psr/container": "^1.0|^2.0",
|
||||||
|
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/Resources/core.php",
|
||||||
|
"src/Resources/debug.php",
|
||||||
|
"src/Resources/escaper.php",
|
||||||
|
"src/Resources/string_loader.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Twig\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com",
|
||||||
|
"homepage": "http://fabien.potencier.org",
|
||||||
|
"role": "Lead Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Twig Team",
|
||||||
|
"role": "Contributors"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Armin Ronacher",
|
||||||
|
"email": "armin.ronacher@active-4.com",
|
||||||
|
"role": "Project Founder"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Twig, the flexible, fast, and secure template language for PHP",
|
||||||
|
"homepage": "https://twig.symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"templating"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/twigphp/Twig/issues",
|
||||||
|
"source": "https://github.com/twigphp/Twig/tree/v3.22.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/twig/twig",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-12-14T11:28:47+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": {},
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": {
|
||||||
|
"php": ">=8.3"
|
||||||
|
},
|
||||||
|
"platform-dev": {},
|
||||||
|
"plugin-api-version": "2.6.0"
|
||||||
|
}
|
||||||
@@ -95,6 +95,19 @@ class Product_Data {
|
|||||||
<div id="composable_product_data" class="panel woocommerce_options_panel hidden">
|
<div id="composable_product_data" class="panel woocommerce_options_panel hidden">
|
||||||
<div class="options_group">
|
<div class="options_group">
|
||||||
<?php
|
<?php
|
||||||
|
woocommerce_wp_select([
|
||||||
|
'id' => '_composable_include_unpublished',
|
||||||
|
'label' => __('Include Non-Public Products', 'wc-composable-product'),
|
||||||
|
'description' => __('Allow draft and private products in the selection. Useful when products should only be sold as part of a composition.', 'wc-composable-product'),
|
||||||
|
'desc_tip' => true,
|
||||||
|
'options' => [
|
||||||
|
'' => __('Use global default', 'wc-composable-product'),
|
||||||
|
'yes' => __('Yes', 'wc-composable-product'),
|
||||||
|
'no' => __('No', 'wc-composable-product'),
|
||||||
|
],
|
||||||
|
'value' => get_post_meta($post->ID, '_composable_include_unpublished', true) ?: '',
|
||||||
|
]);
|
||||||
|
|
||||||
woocommerce_wp_select([
|
woocommerce_wp_select([
|
||||||
'id' => '_composable_criteria_type',
|
'id' => '_composable_criteria_type',
|
||||||
'label' => __('Selection Criteria', 'wc-composable-product'),
|
'label' => __('Selection Criteria', 'wc-composable-product'),
|
||||||
@@ -181,6 +194,10 @@ class Product_Data {
|
|||||||
$pricing_mode = isset($_POST['_composable_pricing_mode']) ? sanitize_text_field($_POST['_composable_pricing_mode']) : '';
|
$pricing_mode = isset($_POST['_composable_pricing_mode']) ? sanitize_text_field($_POST['_composable_pricing_mode']) : '';
|
||||||
update_post_meta($post_id, '_composable_pricing_mode', $pricing_mode);
|
update_post_meta($post_id, '_composable_pricing_mode', $pricing_mode);
|
||||||
|
|
||||||
|
// Save include unpublished
|
||||||
|
$include_unpublished = isset($_POST['_composable_include_unpublished']) ? sanitize_text_field($_POST['_composable_include_unpublished']) : '';
|
||||||
|
update_post_meta($post_id, '_composable_include_unpublished', $include_unpublished);
|
||||||
|
|
||||||
// Save criteria type
|
// Save criteria type
|
||||||
$criteria_type = isset($_POST['_composable_criteria_type']) ? sanitize_text_field($_POST['_composable_criteria_type']) : 'category';
|
$criteria_type = isset($_POST['_composable_criteria_type']) ? sanitize_text_field($_POST['_composable_criteria_type']) : 'category';
|
||||||
update_post_meta($post_id, '_composable_criteria_type', $criteria_type);
|
update_post_meta($post_id, '_composable_criteria_type', $criteria_type);
|
||||||
|
|||||||
@@ -60,6 +60,13 @@ class Settings extends \WC_Settings_Page {
|
|||||||
],
|
],
|
||||||
'desc_tip' => true,
|
'desc_tip' => true,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'title' => __('Include Non-Public Products', 'wc-composable-product'),
|
||||||
|
'desc' => __('Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually.', 'wc-composable-product'),
|
||||||
|
'id' => 'wc_composable_include_unpublished',
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'default' => 'no',
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'title' => __('Show Product Images', 'wc-composable-product'),
|
'title' => __('Show Product Images', 'wc-composable-product'),
|
||||||
'desc' => __('Display product images in the selection interface.', 'wc-composable-product'),
|
'desc' => __('Display product images in the selection interface.', 'wc-composable-product'),
|
||||||
|
|||||||
@@ -97,6 +97,22 @@ class Product_Type extends \WC_Product {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if non-public products should be included
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function should_include_unpublished() {
|
||||||
|
$per_product = $this->get_meta('_composable_include_unpublished', true);
|
||||||
|
if ($per_product === 'yes') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ($per_product === 'no') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return get_option('wc_composable_include_unpublished', 'no') === 'yes';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get available products based on criteria
|
* Get available products based on criteria
|
||||||
*
|
*
|
||||||
@@ -104,10 +120,11 @@ class Product_Type extends \WC_Product {
|
|||||||
*/
|
*/
|
||||||
public function get_available_products() {
|
public function get_available_products() {
|
||||||
$criteria = $this->get_selection_criteria();
|
$criteria = $this->get_selection_criteria();
|
||||||
|
$include_unpublished = $this->should_include_unpublished();
|
||||||
$args = [
|
$args = [
|
||||||
'post_type' => 'product',
|
'post_type' => 'product',
|
||||||
'posts_per_page' => -1,
|
'posts_per_page' => -1,
|
||||||
'post_status' => 'publish',
|
'post_status' => $include_unpublished ? ['publish', 'draft', 'private'] : 'publish',
|
||||||
'orderby' => 'title',
|
'orderby' => 'title',
|
||||||
'order' => 'ASC',
|
'order' => 'ASC',
|
||||||
];
|
];
|
||||||
@@ -177,11 +194,11 @@ class Product_Type extends \WC_Product {
|
|||||||
$variation_ids = $product->get_children();
|
$variation_ids = $product->get_children();
|
||||||
foreach ($variation_ids as $variation_id) {
|
foreach ($variation_ids as $variation_id) {
|
||||||
$variation = wc_get_product($variation_id);
|
$variation = wc_get_product($variation_id);
|
||||||
if ($variation && $variation->is_purchasable()) {
|
if ($variation && ($include_unpublished || $variation->is_purchasable())) {
|
||||||
$products[] = $variation;
|
$products[] = $variation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($product->is_purchasable()) {
|
} elseif ($include_unpublished || $product->is_purchasable()) {
|
||||||
$products[] = $product;
|
$products[] = $product;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -242,3 +242,23 @@ msgstr "An Lager"
|
|||||||
#: templates/product-selector.twig
|
#: templates/product-selector.twig
|
||||||
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
||||||
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfigurieren Sie die Produktkriterien im Admin-Bereich."
|
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfigurieren Sie die Produktkriterien im Admin-Bereich."
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php, includes/Admin/Product_Data.php
|
||||||
|
msgid "Include Non-Public Products"
|
||||||
|
msgstr "Nicht-öffentliche Produkte einbeziehen"
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php
|
||||||
|
msgid "Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zusammenstellbarer Produkte anzeigen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen, nicht einzeln."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Allow draft and private products in the selection. Useful when products should only be sold as part of a composition."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zulassen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Ja"
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Nein"
|
||||||
|
|||||||
@@ -242,3 +242,23 @@ msgstr "An Lager"
|
|||||||
#: templates/product-selector.twig
|
#: templates/product-selector.twig
|
||||||
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
||||||
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfiguriere die Produktkriterien im Admin-Bereich."
|
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfiguriere die Produktkriterien im Admin-Bereich."
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php, includes/Admin/Product_Data.php
|
||||||
|
msgid "Include Non-Public Products"
|
||||||
|
msgstr "Nicht-öffentliche Produkte einbeziehen"
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php
|
||||||
|
msgid "Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zusammenstellbarer Produkte anzeigen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen, nicht einzeln."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Allow draft and private products in the selection. Useful when products should only be sold as part of a composition."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zulassen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Ja"
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Nein"
|
||||||
|
|||||||
@@ -242,3 +242,23 @@ msgstr "Auf Lager"
|
|||||||
#: templates/product-selector.twig
|
#: templates/product-selector.twig
|
||||||
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
||||||
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfigurieren Sie die Produktkriterien im Admin-Bereich."
|
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfigurieren Sie die Produktkriterien im Admin-Bereich."
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php, includes/Admin/Product_Data.php
|
||||||
|
msgid "Include Non-Public Products"
|
||||||
|
msgstr "Nicht-öffentliche Produkte einbeziehen"
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php
|
||||||
|
msgid "Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zusammenstellbarer Produkte anzeigen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen, nicht einzeln."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Allow draft and private products in the selection. Useful when products should only be sold as part of a composition."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zulassen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Ja"
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Nein"
|
||||||
|
|||||||
@@ -242,3 +242,23 @@ msgstr "Auf Lager"
|
|||||||
#: templates/product-selector.twig
|
#: templates/product-selector.twig
|
||||||
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
||||||
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfiguriere die Produktkriterien im Admin-Bereich."
|
msgstr "Keine Produkte zur Auswahl verfügbar. Bitte konfiguriere die Produktkriterien im Admin-Bereich."
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php, includes/Admin/Product_Data.php
|
||||||
|
msgid "Include Non-Public Products"
|
||||||
|
msgstr "Nicht-öffentliche Produkte einbeziehen"
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php
|
||||||
|
msgid "Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zusammenstellbarer Produkte anzeigen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen, nicht einzeln."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Allow draft and private products in the selection. Useful when products should only be sold as part of a composition."
|
||||||
|
msgstr "Entwürfe und private Produkte in der Auswahl zulassen. Nützlich, wenn Produkte nur als Teil einer Zusammenstellung verkauft werden sollen."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Ja"
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Nein"
|
||||||
|
|||||||
@@ -242,3 +242,23 @@ msgstr "En stock"
|
|||||||
#: templates/product-selector.twig
|
#: templates/product-selector.twig
|
||||||
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
||||||
msgstr "Aucun produit disponible pour la sélection. Veuillez configurer les critères de produit dans le panneau d'administration."
|
msgstr "Aucun produit disponible pour la sélection. Veuillez configurer les critères de produit dans le panneau d'administration."
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php, includes/Admin/Product_Data.php
|
||||||
|
msgid "Include Non-Public Products"
|
||||||
|
msgstr "Inclure les produits non publics"
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php
|
||||||
|
msgid "Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually."
|
||||||
|
msgstr "Autoriser les brouillons et les produits privés dans les sélections de produits composables. Utile lorsque les produits ne doivent être vendus que dans le cadre d'une composition, pas individuellement."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Allow draft and private products in the selection. Useful when products should only be sold as part of a composition."
|
||||||
|
msgstr "Autoriser les brouillons et les produits privés dans la sélection. Utile lorsque les produits ne doivent être vendus que dans le cadre d'une composition."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Oui"
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Non"
|
||||||
|
|||||||
@@ -242,3 +242,23 @@ msgstr "Disponibile"
|
|||||||
#: templates/product-selector.twig
|
#: templates/product-selector.twig
|
||||||
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
||||||
msgstr "Nessun prodotto disponibile per la selezione. Si prega di configurare i criteri del prodotto nel pannello di amministrazione."
|
msgstr "Nessun prodotto disponibile per la selezione. Si prega di configurare i criteri del prodotto nel pannello di amministrazione."
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php, includes/Admin/Product_Data.php
|
||||||
|
msgid "Include Non-Public Products"
|
||||||
|
msgstr "Includi prodotti non pubblici"
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php
|
||||||
|
msgid "Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually."
|
||||||
|
msgstr "Consenti la visualizzazione di bozze e prodotti privati nelle selezioni dei prodotti componibili. Utile quando i prodotti devono essere venduti solo come parte di una composizione, non singolarmente."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Allow draft and private products in the selection. Useful when products should only be sold as part of a composition."
|
||||||
|
msgstr "Consenti bozze e prodotti privati nella selezione. Utile quando i prodotti devono essere venduti solo come parte di una composizione."
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Sì"
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "No"
|
||||||
|
msgstr "No"
|
||||||
|
|||||||
@@ -241,3 +241,23 @@ msgstr ""
|
|||||||
#: templates/product-selector.twig
|
#: templates/product-selector.twig
|
||||||
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
msgid "No products available for selection. Please configure the product criteria in the admin panel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php, includes/Admin/Product_Data.php
|
||||||
|
msgid "Include Non-Public Products"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/Admin/Settings.php
|
||||||
|
msgid "Allow draft and private products to appear in composable product selections. Useful when products should only be sold as part of a composition, not individually."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Allow draft and private products in the selection. Useful when products should only be sold as part of a composition."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/Admin/Product_Data.php
|
||||||
|
msgid "No"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* Plugin Name: WooCommerce Composable Products
|
* Plugin Name: WooCommerce Composable Products
|
||||||
* Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-composable-product
|
* Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-composable-product
|
||||||
* Description: Create composable products where customers select a limited number of items from a configurable set
|
* Description: Create composable products where customers select a limited number of items from a configurable set
|
||||||
* Version: 1.2.1
|
* Version: 1.3.0
|
||||||
* Author: Marco Graetsch
|
* Author: Marco Graetsch
|
||||||
* Author URI: https://src.bundespruefstelle.ch/magdev
|
* Author URI: https://src.bundespruefstelle.ch/magdev
|
||||||
* License: GPL v3 or later
|
* License: GPL v3 or later
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
defined('ABSPATH') || exit;
|
defined('ABSPATH') || exit;
|
||||||
|
|
||||||
// Define plugin constants
|
// Define plugin constants
|
||||||
define('WC_COMPOSABLE_PRODUCT_VERSION', '1.2.1');
|
define('WC_COMPOSABLE_PRODUCT_VERSION', '1.3.0');
|
||||||
define('WC_COMPOSABLE_PRODUCT_FILE', __FILE__);
|
define('WC_COMPOSABLE_PRODUCT_FILE', __FILE__);
|
||||||
define('WC_COMPOSABLE_PRODUCT_PATH', plugin_dir_path(__FILE__));
|
define('WC_COMPOSABLE_PRODUCT_PATH', plugin_dir_path(__FILE__));
|
||||||
define('WC_COMPOSABLE_PRODUCT_URL', plugin_dir_url(__FILE__));
|
define('WC_COMPOSABLE_PRODUCT_URL', plugin_dir_url(__FILE__));
|
||||||
|
|||||||
Reference in New Issue
Block a user