Plugin Directory

Changeset 3493686


Ignore:
Timestamp:
03/29/2026 05:59:33 AM (5 hours ago)
Author:
pluginever
Message:

Update to version 1.3.3

Location:
product-tabs-manager
Files:
18 edited
1 copied

Legend:

Unmodified
Added
Removed
  • product-tabs-manager/tags/1.3.3/includes/Admin/Actions.php

    r3448691 r3493686  
    8585                'excluded_products'       => 'array',
    8686                'excluded_categories'     => 'array',
     87                'tab_product_list'        => 'array',
    8788            ),
    8889            $tab_id
     
    111112        }
    112113
     114        // Save faq items meta.
     115        $faq_items = isset( $_POST['ptabsm_faq_items'] ) && is_array( $_POST['ptabsm_faq_items'] ) ? map_deep( wp_unslash( $_POST['ptabsm_faq_items'] ), 'sanitize_text_field' ) : array();
     116        $faq_items = array_values( $faq_items );
     117        update_post_meta( $post, '_ptabsm_faq_items', $faq_items );
     118
    113119        $referer = add_query_arg(
    114120            array( 'edit' => absint( $post ) ),
     
    140146        }
    141147
    142         // Sanitize and validate the tabs data.
     148        // Sanitize and validate the tabs' data.
    143149        $sanitized_tabs = array();
    144150        foreach ( $tabs as $key => $tab ) {
     
    150156
    151157        // Update the option.
    152         $updated = update_option( 'ptabsm_ddefault_product_tabs', $sanitized_tabs );
     158        $updated = update_option( 'ptabsm_default_product_tabs', $sanitized_tabs );
    153159
    154160        if ( $updated ) {
  • product-tabs-manager/tags/1.3.3/includes/Admin/views/product-tabs/add.php

    r3448691 r3493686  
    2020    <div class="bk-poststuff">
    2121        <div class="column-1">
    22             <!-- General tab options -->
    2322            <div class="bk-card">
    2423                <div class="bk-card__header">
     
    3635                        <input type="text" name="tab_title" id="tab_title" placeholder="<?php esc_html_e( 'Enter tab title...', 'product-tabs-manager' ); ?>" required/>
    3736                    </div>
    38                     <!-- Priority -->
    3937                    <div class="bk-form-field">
    4038                        <label for="tab_priority">
     
    4947                            <abbr class="required">*</abbr>
    5048                        </label>
    51                         <select type="text" name="tab_content_type" id="tab_content_type" required >
    52                             <option value="content" selected><?php esc_html_e( 'General Content', 'product-tabs-manager' ); ?></option>
    53                             <option value="" disabled><?php esc_html_e( 'Question/Answer ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
    54                             <option value="" disabled><?php esc_html_e( 'Product List ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
     49                        <select name="tab_content_type" id="tab_content_type" required >
     50                            <?php foreach ( ptabsm_get_tab_content_type_options() as $option ) { ?>
     51                                <option value="<?php echo esc_attr( $option['value'] ); ?>" <?php selected( $option['value'], 'content' ); ?> <?php disabled( $option['disabled'], true ); ?>>
     52                                    <?php echo esc_html( $option['label'] ); ?>
     53                                </option>
     54                            <?php } ?>
    5555                        </select>
    5656                    </div>
    57                     <div class="bk-form-field">
     57                    <div class="bk-form-field ptabsm_tab_content">
    5858                        <label for="tab_content">
    5959                            <?php esc_html_e( 'Description', 'product-tabs-manager' ); ?>
     
    7575                        ?>
    7676                    </div>
     77                    <?php
     78                    /*
     79                    * Hook: ptabsm_after_add_product_tab_content.
     80                    *
     81                    * @since 1.3.2
     82                    */
     83                    do_action( 'ptabsm_after_add_product_tab_content' );
     84                    ?>
    7785                </div>
    7886            </div>
    79 
    8087            <!-- Tab Settings -->
    8188            <div class="bk-card">
  • product-tabs-manager/tags/1.3.3/includes/Admin/views/product-tabs/edit.php

    r3448691 r3493686  
    2222    <div class="bk-poststuff">
    2323        <div class="column-1">
    24             <!-- General tab options -->
    2524            <div class="bk-card">
    2625                <div class="bk-card__header">
     
    3938                    </div>
    4039                    <?php if ( empty( $tab_key ) ) : ?>
    41                     <!-- Priority -->
    4240                    <div class="bk-form-field">
    4341                        <label for="tab_priority">
     
    5250                            <span class="required">*</span>
    5351                        </label>
    54                         <select type="text" name="tab_content_type" id="tab_content_type" required >
    55                             <option value="content" selected><?php esc_html_e( 'General Content', 'product-tabs-manager' ); ?></option>
    56                             <option value="" disabled><?php esc_html_e( 'Question/Answer ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
    57                             <option value="" disabled><?php esc_html_e( 'Product List ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
    58                         </select>
    59                     </div>
    60                     <div class="bk-form-field">
     52                        <select name="tab_content_type" id="tab_content_type" required >
     53                            <?php foreach ( ptabsm_get_tab_content_type_options() as $option ) { ?>
     54                                <option value="<?php echo esc_attr( $option['value'] ); ?>" <?php selected( get_post_meta( $product_tab->ID, '_ptabsm_tab_content_type', true ), $option['value'] ); ?> <?php disabled( $option['disabled'] ); ?>>
     55                                    <?php echo esc_html( $option['label'] ); ?>
     56                                </option>
     57                            <?php } ?>
     58                        </select>
     59                    </div>
     60                    <div class="bk-form-field ptabsm_tab_content">
    6161                        <label for="tab_content">
    6262                            <?php esc_html_e( 'Description', 'product-tabs-manager' ); ?>
     
    7878                        ?>
    7979                    </div>
    80                     <?php endif; ?>
     80                        <?php
     81                        /*
     82                        * Hook: ptabsm_after_edit_product_tab_content.
     83                        *
     84                        * @param \WP_Post $product_tab Current tab object.
     85                        *
     86                        * @since 1.3.2
     87                        */
     88                        do_action( 'ptabsm_after_edit_product_tab_content', $product_tab );
     89                        ?>
     90                <?php endif; ?>
    8191                </div>
    8292            </div>
    83 
    8493            <!-- Tab Settings -->
    8594            <div class="bk-card">
  • product-tabs-manager/tags/1.3.3/includes/Frontend/Products.php

    r3477358 r3493686  
    2929     */
    3030    public static function product_tabs( $tabs ) {
    31 
    3231        foreach ( ptabsm_get_default_tabs() as $key => $tab ) {
    3332            if ( ! array_key_exists( $key, $tabs ) ) {
     
    5049            }
    5150
    52             $tab_key = get_post_meta( $tab_id, '_ptabsm_tab_key', true );
     51            $tab_content_type = get_post_meta( $tab_id, '_ptabsm_tab_content_type', true );
     52            $tab_key          = get_post_meta( $tab_id, '_ptabsm_tab_key', true );
    5353            if ( $tab_key ) {
    5454                if ( ! array_key_exists( $tab_key, $tabs ) ) {
     
    7272                    $tabs[ $tab_key ]['title'] = apply_filters( 'ptabsm_product_tab_title', $tab_title, $tab_id );
    7373                }
     74            } elseif ( 'product_list' === $tab_content_type ) {
     75                $priority                        = get_post_meta( $tab_id, '_ptabsm_tab_priority', true );
     76                $tabs[ 'ptabsm_tab_' . $tab_id ] = array(
     77                    'title'    => apply_filters( 'ptabsm_product_tab_title', get_the_title( $tab_id ), $tab_id ),
     78                    'priority' => is_numeric( $priority ) ? intval( $priority ) : 100,
     79                    'callback' => function () use ( $tab_id ) {
     80                        /*
     81                        * Hook: ptabsm_product_tab_general_option_product_list.
     82                        *
     83                        * @param $tab_id tab ID.
     84                        *
     85                        * @since 1.3.2
     86                        */
     87                        do_action( 'ptabsm_product_tab_general_option_product_list', $tab_id );
     88                    },
     89                );
     90            } elseif ( 'qa' === $tab_content_type ) {
     91                $priority                        = get_post_meta( $tab_id, '_ptabsm_tab_priority', true );
     92                $tabs[ 'ptabsm_tab_' . $tab_id ] = array(
     93                    'title'    => apply_filters( 'ptabsm_product_tab_title', get_the_title( $tab_id ), $tab_id ),
     94                    'priority' => is_numeric( $priority ) ? intval( $priority ) : 100,
     95                    'callback' => function () use ( $tab_id ) {
     96                        /*
     97                        * Hook: ptabsm_product_tab_general_option_qa_list.
     98                        *
     99                        * @param $tab_id tab ID.
     100                        *
     101                        * @since 1.3.2
     102                        */
     103                        do_action( 'ptabsm_product_tab_general_option_qa_list', $tab_id );
     104                    },
     105                );
    74106            } else {
    75107                $priority                        = get_post_meta( $tab_id, '_ptabsm_tab_priority', true );
  • product-tabs-manager/tags/1.3.3/includes/functions.php

    r3448691 r3493686  
    2626 */
    2727function ptabsm_get_default_tabs() {
    28     $default_tabs = get_option( 'ptabsm_ddefault_product_tabs', array() );
     28    $default_tabs = get_option( 'ptabsm_default_product_tabs', array() );
    2929
    3030    if ( empty( $default_tabs ) || ! is_array( $default_tabs ) ) {
     
    137137    return is_array( $default_tabs ) ? $default_tabs : array();
    138138}
     139
     140/**
     141 * Tab Content type option list
     142 *
     143 * @since 1.3.2
     144 * @return array
     145 */
     146function ptabsm_get_tab_content_type_options() {
     147    return apply_filters(
     148        'ptabsm_tab_content_type_option',
     149        array(
     150            array(
     151                'value'    => 'content',
     152                'label'    => esc_html__( 'General Content', 'product-tabs-manager' ),
     153                'disabled' => false,
     154            ),
     155            array(
     156                'value'    => 'qa',
     157                'label'    => esc_html__( 'Question/Answer ( Upgrade to PRO )', 'product-tabs-manager' ),
     158                'disabled' => true,
     159            ),
     160            array(
     161                'value'    => 'product_list',
     162                'label'    => esc_html__( 'Product List ( Upgrade to PRO )', 'product-tabs-manager' ),
     163                'disabled' => true,
     164            ),
     165        )
     166    );
     167}
  • product-tabs-manager/tags/1.3.3/languages/product-tabs-manager.pot

    r3477358 r3493686  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Product Tabs Manager 1.3.2\n"
     5"Project-Id-Version: Product Tabs Manager 1.3.3\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/product-tabs-manager\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2026-03-08T09:55:39+00:00\n"
     12"POT-Creation-Date: 2026-03-29T05:53:16+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
     
    5252msgstr ""
    5353
    54 #: includes/Admin/Actions.php:132
     54#: includes/Admin/Actions.php:138
    5555msgid "You do not have permission to perform this action."
    5656msgstr ""
    5757
    58 #: includes/Admin/Actions.php:139
     58#: includes/Admin/Actions.php:145
    5959msgid "Invalid tabs data."
    6060msgstr ""
    6161
    62 #: includes/Admin/Actions.php:157
     62#: includes/Admin/Actions.php:163
    6363msgid "Tabs order updated successfully."
    6464msgstr ""
    6565
    66 #: includes/Admin/Actions.php:162
     66#: includes/Admin/Actions.php:168
    6767msgid "Failed to update tabs order."
    6868msgstr ""
    6969
    70 #: includes/Admin/Actions.php:177
    71 #: includes/Admin/Actions.php:228
     70#: includes/Admin/Actions.php:183
     71#: includes/Admin/Actions.php:234
    7272msgid "No, search term provided."
    7373msgstr ""
    7474
    75 #: includes/Admin/Actions.php:280
     75#: includes/Admin/Actions.php:286
    7676msgid "No, user name provided."
    7777msgstr ""
     
    118118
    119119#: includes/Admin/ListTables/ProductTabsListTable.php:131
    120 #: includes/Admin/views/product-tabs/add.php:33
    121 #: includes/Admin/views/product-tabs/edit.php:35
     120#: includes/Admin/views/product-tabs/add.php:32
     121#: includes/Admin/views/product-tabs/edit.php:34
    122122msgid "Title"
    123123msgstr ""
     
    138138
    139139#: includes/Admin/ListTables/ProductTabsListTable.php:135
    140 #: includes/Admin/views/product-tabs/add.php:135
    141 #: includes/Admin/views/product-tabs/edit.php:163
     140#: includes/Admin/views/product-tabs/add.php:142
     141#: includes/Admin/views/product-tabs/edit.php:172
    142142msgid "Status"
    143143msgstr ""
     
    149149#: includes/Admin/ListTables/ProductTabsListTable.php:174
    150150#: includes/Admin/ListTables/ProductTabsListTable.php:220
    151 #: includes/Admin/views/product-tabs/edit.php:178
     151#: includes/Admin/views/product-tabs/edit.php:187
    152152msgid "Delete"
    153153msgstr ""
     
    158158
    159159#: includes/Admin/ListTables/ProductTabsListTable.php:256
    160 #: includes/Admin/views/product-tabs/add.php:138
    161 #: includes/Admin/views/product-tabs/edit.php:166
     160#: includes/Admin/views/product-tabs/add.php:145
     161#: includes/Admin/views/product-tabs/edit.php:175
    162162msgid "Active"
    163163msgstr ""
    164164
    165165#: includes/Admin/ListTables/ProductTabsListTable.php:256
    166 #: includes/Admin/views/product-tabs/add.php:139
    167 #: includes/Admin/views/product-tabs/edit.php:167
     166#: includes/Admin/views/product-tabs/add.php:146
     167#: includes/Admin/views/product-tabs/edit.php:176
    168168msgid "Inactive"
    169169msgstr ""
     
    289289msgstr ""
    290290
    291 #: includes/Admin/views/product-tabs/add.php:25
    292 #: includes/Admin/views/product-tabs/edit.php:27
     291#: includes/Admin/views/product-tabs/add.php:24
     292#: includes/Admin/views/product-tabs/edit.php:26
    293293msgid "General Options"
    294294msgstr ""
    295295
    296 #: includes/Admin/views/product-tabs/add.php:27
    297 #: includes/Admin/views/product-tabs/edit.php:29
     296#: includes/Admin/views/product-tabs/add.php:26
     297#: includes/Admin/views/product-tabs/edit.php:28
    298298msgid "Add tab title and description"
    299299msgstr ""
    300300
    301 #: includes/Admin/views/product-tabs/add.php:36
    302 #: includes/Admin/views/product-tabs/edit.php:38
     301#: includes/Admin/views/product-tabs/add.php:35
     302#: includes/Admin/views/product-tabs/edit.php:37
    303303msgid "Enter tab title..."
    304304msgstr ""
    305305
    306 #: includes/Admin/views/product-tabs/add.php:41
    307 #: includes/Admin/views/product-tabs/edit.php:44
     306#: includes/Admin/views/product-tabs/add.php:39
     307#: includes/Admin/views/product-tabs/edit.php:42
    308308msgid "Tab Priority"
    309309msgstr ""
    310310
    311 #: includes/Admin/views/product-tabs/add.php:44
    312 #: includes/Admin/views/product-tabs/edit.php:47
     311#: includes/Admin/views/product-tabs/add.php:42
     312#: includes/Admin/views/product-tabs/edit.php:45
    313313msgid "Enter the tab priority. The tab will be sorted according to the priority."
    314314msgstr ""
    315315
    316 #: includes/Admin/views/product-tabs/add.php:48
    317 #: includes/Admin/views/product-tabs/edit.php:51
     316#: includes/Admin/views/product-tabs/add.php:46
     317#: includes/Admin/views/product-tabs/edit.php:49
    318318msgid "Content Type"
    319 msgstr ""
    320 
    321 #: includes/Admin/views/product-tabs/add.php:52
    322 #: includes/Admin/views/product-tabs/edit.php:55
    323 msgid "General Content"
    324 msgstr ""
    325 
    326 #: includes/Admin/views/product-tabs/add.php:53
    327 #: includes/Admin/views/product-tabs/edit.php:56
    328 msgid "Question/Answer ( Upgrade to PRO )"
    329 msgstr ""
    330 
    331 #: includes/Admin/views/product-tabs/add.php:54
    332 #: includes/Admin/views/product-tabs/edit.php:57
    333 msgid "Product List ( Upgrade to PRO )"
    334319msgstr ""
    335320
     
    340325msgstr ""
    341326
    342 #: includes/Admin/views/product-tabs/add.php:83
    343 #: includes/Admin/views/product-tabs/edit.php:87
     327#: includes/Admin/views/product-tabs/add.php:90
     328#: includes/Admin/views/product-tabs/edit.php:96
    344329msgid "Tab Settings"
    345330msgstr ""
    346331
    347 #: includes/Admin/views/product-tabs/add.php:85
    348 #: includes/Admin/views/product-tabs/edit.php:89
     332#: includes/Admin/views/product-tabs/add.php:92
     333#: includes/Admin/views/product-tabs/edit.php:98
    349334msgid "Settings for tab"
    350335msgstr ""
    351336
    352 #: includes/Admin/views/product-tabs/add.php:90
    353 #: includes/Admin/views/product-tabs/edit.php:95
     337#: includes/Admin/views/product-tabs/add.php:97
     338#: includes/Admin/views/product-tabs/edit.php:104
    354339msgid "Visible Type"
    355340msgstr ""
    356341
    357 #: includes/Admin/views/product-tabs/add.php:92
    358 #: includes/Admin/views/product-tabs/edit.php:97
     342#: includes/Admin/views/product-tabs/add.php:99
     343#: includes/Admin/views/product-tabs/edit.php:106
    359344msgid "All Products"
    360345msgstr ""
    361346
    362 #: includes/Admin/views/product-tabs/add.php:93
    363347#: includes/Admin/views/product-tabs/add.php:100
    364 #: includes/Admin/views/product-tabs/edit.php:98
    365 #: includes/Admin/views/product-tabs/edit.php:106
     348#: includes/Admin/views/product-tabs/add.php:107
     349#: includes/Admin/views/product-tabs/edit.php:107
     350#: includes/Admin/views/product-tabs/edit.php:115
    366351msgid "Specific Products"
    367352msgstr ""
    368353
    369 #: includes/Admin/views/product-tabs/add.php:94
    370 #: includes/Admin/views/product-tabs/add.php:108
    371 #: includes/Admin/views/product-tabs/edit.php:99
    372 #: includes/Admin/views/product-tabs/edit.php:124
     354#: includes/Admin/views/product-tabs/add.php:101
     355#: includes/Admin/views/product-tabs/add.php:115
     356#: includes/Admin/views/product-tabs/edit.php:108
     357#: includes/Admin/views/product-tabs/edit.php:133
    373358msgid "Specific Categories"
    374359msgstr ""
    375360
    376 #: includes/Admin/views/product-tabs/add.php:96
    377 #: includes/Admin/views/product-tabs/edit.php:101
     361#: includes/Admin/views/product-tabs/add.php:103
     362#: includes/Admin/views/product-tabs/edit.php:110
    378363msgid "Choose where to show this tab: on All Products, Specific Products, or Specific Categories—whichever suits your needs."
    379364msgstr ""
    380365
    381 #: includes/Admin/views/product-tabs/add.php:102
    382 #: includes/Admin/views/product-tabs/edit.php:108
     366#: includes/Admin/views/product-tabs/add.php:109
     367#: includes/Admin/views/product-tabs/edit.php:117
    383368msgid "Search products"
    384369msgstr ""
    385370
    386 #: includes/Admin/views/product-tabs/add.php:104
    387 #: includes/Admin/views/product-tabs/edit.php:119
     371#: includes/Admin/views/product-tabs/add.php:111
     372#: includes/Admin/views/product-tabs/edit.php:128
    388373msgid "Use this box to select products for this tab. Search by category name and choose multiple products to include."
    389374msgstr ""
    390375
    391 #: includes/Admin/views/product-tabs/add.php:110
    392 #: includes/Admin/views/product-tabs/edit.php:126
     376#: includes/Admin/views/product-tabs/add.php:117
     377#: includes/Admin/views/product-tabs/edit.php:135
    393378msgid "Search categories"
    394379msgstr ""
    395380
    396 #: includes/Admin/views/product-tabs/add.php:112
    397 #: includes/Admin/views/product-tabs/edit.php:138
     381#: includes/Admin/views/product-tabs/add.php:119
     382#: includes/Admin/views/product-tabs/edit.php:147
    398383msgid "Use this box to select categories for this tab. Search by category name and choose multiple categories to include."
    399384msgstr ""
    400385
    401 #: includes/Admin/views/product-tabs/add.php:129
    402 #: includes/Admin/views/product-tabs/edit.php:157
     386#: includes/Admin/views/product-tabs/add.php:136
     387#: includes/Admin/views/product-tabs/edit.php:166
    403388msgid "Actions"
    404389msgstr ""
    405390
    406 #: includes/Admin/views/product-tabs/add.php:148
     391#: includes/Admin/views/product-tabs/add.php:155
    407392msgid "Publish"
    408393msgstr ""
     
    428413msgstr ""
    429414
    430 #: includes/Admin/views/product-tabs/edit.php:181
     415#: includes/Admin/views/product-tabs/edit.php:190
    431416msgid "Update"
    432417msgstr ""
     
    475460#: includes/functions.php:41
    476461msgid "Reviews"
     462msgstr ""
     463
     464#: includes/functions.php:152
     465msgid "General Content"
     466msgstr ""
     467
     468#: includes/functions.php:157
     469msgid "Question/Answer ( Upgrade to PRO )"
     470msgstr ""
     471
     472#: includes/functions.php:162
     473msgid "Product List ( Upgrade to PRO )"
    477474msgstr ""
    478475
  • product-tabs-manager/tags/1.3.3/product-tabs-manager.php

    r3477358 r3493686  
    44 * Plugin URI:           https://pluginever.com/plugins/product-tabs-manager-pro/
    55 * Description:          Product Tabs Manager is a powerful and user-friendly WooCommerce plugin that lets you create, customize, and fully manage product tabs, including default WooCommerce tabs, without writing a single line of code.
    6  * Version:              1.3.2
     6 * Version:              1.3.3
    77 * Requires at least:    5.2
    88 * Tested up to:         6.9
     
    1515 * Domain Path:          /languages
    1616 * WC requires at least: 3.0.0
    17  * WC tested up to:      10.5
     17 * WC tested up to:      10.6
    1818 * Requires Plugins:     woocommerce
    1919 *
  • product-tabs-manager/tags/1.3.3/readme.txt

    r3477358 r3493686  
    33Tags: woocommerce tabs, product tabs, custom tabs, woocommerce product tabs, tab manager
    44Tested up to: 6.9
    5 Stable tag: 1.3.2
     5Stable tag: 1.3.3
    66License: GPL v2 or later
    77License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    546546
    547547== Changelog ==
     548= 1.3.3 ( 29th March 2026 ) =
     549* New: Added new tab type for displaying list of products in a tab
     550* New: Added new tab type for displaying FAQs in a tab
     551* Fix: Few minor bugs and issues
     552* Compatibility: Compatible with the latest WooCommerce version (10.6)
    548553
    549554= 1.3.2 ( 8th March 2026 ) =
  • product-tabs-manager/tags/1.3.3/vendor/composer/installed.php

    r3477358 r3493686  
    44        'pretty_version' => 'dev-master',
    55        'version' => 'dev-master',
    6         'reference' => 'df5801e7c33263ff5fa3b763207a54a1d74eabb6',
     6        'reference' => '60aa5d52efb53ff193323ff73f4fcd28b8e54bb3',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    3232            'pretty_version' => 'dev-master',
    3333            'version' => 'dev-master',
    34             'reference' => 'df5801e7c33263ff5fa3b763207a54a1d74eabb6',
     34            'reference' => '60aa5d52efb53ff193323ff73f4fcd28b8e54bb3',
    3535            'type' => 'wordpress-plugin',
    3636            'install_path' => __DIR__ . '/../../',
  • product-tabs-manager/trunk/includes/Admin/Actions.php

    r3448691 r3493686  
    8585                'excluded_products'       => 'array',
    8686                'excluded_categories'     => 'array',
     87                'tab_product_list'        => 'array',
    8788            ),
    8889            $tab_id
     
    111112        }
    112113
     114        // Save faq items meta.
     115        $faq_items = isset( $_POST['ptabsm_faq_items'] ) && is_array( $_POST['ptabsm_faq_items'] ) ? map_deep( wp_unslash( $_POST['ptabsm_faq_items'] ), 'sanitize_text_field' ) : array();
     116        $faq_items = array_values( $faq_items );
     117        update_post_meta( $post, '_ptabsm_faq_items', $faq_items );
     118
    113119        $referer = add_query_arg(
    114120            array( 'edit' => absint( $post ) ),
     
    140146        }
    141147
    142         // Sanitize and validate the tabs data.
     148        // Sanitize and validate the tabs' data.
    143149        $sanitized_tabs = array();
    144150        foreach ( $tabs as $key => $tab ) {
     
    150156
    151157        // Update the option.
    152         $updated = update_option( 'ptabsm_ddefault_product_tabs', $sanitized_tabs );
     158        $updated = update_option( 'ptabsm_default_product_tabs', $sanitized_tabs );
    153159
    154160        if ( $updated ) {
  • product-tabs-manager/trunk/includes/Admin/views/product-tabs/add.php

    r3448691 r3493686  
    2020    <div class="bk-poststuff">
    2121        <div class="column-1">
    22             <!-- General tab options -->
    2322            <div class="bk-card">
    2423                <div class="bk-card__header">
     
    3635                        <input type="text" name="tab_title" id="tab_title" placeholder="<?php esc_html_e( 'Enter tab title...', 'product-tabs-manager' ); ?>" required/>
    3736                    </div>
    38                     <!-- Priority -->
    3937                    <div class="bk-form-field">
    4038                        <label for="tab_priority">
     
    4947                            <abbr class="required">*</abbr>
    5048                        </label>
    51                         <select type="text" name="tab_content_type" id="tab_content_type" required >
    52                             <option value="content" selected><?php esc_html_e( 'General Content', 'product-tabs-manager' ); ?></option>
    53                             <option value="" disabled><?php esc_html_e( 'Question/Answer ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
    54                             <option value="" disabled><?php esc_html_e( 'Product List ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
     49                        <select name="tab_content_type" id="tab_content_type" required >
     50                            <?php foreach ( ptabsm_get_tab_content_type_options() as $option ) { ?>
     51                                <option value="<?php echo esc_attr( $option['value'] ); ?>" <?php selected( $option['value'], 'content' ); ?> <?php disabled( $option['disabled'], true ); ?>>
     52                                    <?php echo esc_html( $option['label'] ); ?>
     53                                </option>
     54                            <?php } ?>
    5555                        </select>
    5656                    </div>
    57                     <div class="bk-form-field">
     57                    <div class="bk-form-field ptabsm_tab_content">
    5858                        <label for="tab_content">
    5959                            <?php esc_html_e( 'Description', 'product-tabs-manager' ); ?>
     
    7575                        ?>
    7676                    </div>
     77                    <?php
     78                    /*
     79                    * Hook: ptabsm_after_add_product_tab_content.
     80                    *
     81                    * @since 1.3.2
     82                    */
     83                    do_action( 'ptabsm_after_add_product_tab_content' );
     84                    ?>
    7785                </div>
    7886            </div>
    79 
    8087            <!-- Tab Settings -->
    8188            <div class="bk-card">
  • product-tabs-manager/trunk/includes/Admin/views/product-tabs/edit.php

    r3448691 r3493686  
    2222    <div class="bk-poststuff">
    2323        <div class="column-1">
    24             <!-- General tab options -->
    2524            <div class="bk-card">
    2625                <div class="bk-card__header">
     
    3938                    </div>
    4039                    <?php if ( empty( $tab_key ) ) : ?>
    41                     <!-- Priority -->
    4240                    <div class="bk-form-field">
    4341                        <label for="tab_priority">
     
    5250                            <span class="required">*</span>
    5351                        </label>
    54                         <select type="text" name="tab_content_type" id="tab_content_type" required >
    55                             <option value="content" selected><?php esc_html_e( 'General Content', 'product-tabs-manager' ); ?></option>
    56                             <option value="" disabled><?php esc_html_e( 'Question/Answer ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
    57                             <option value="" disabled><?php esc_html_e( 'Product List ( Upgrade to PRO )', 'product-tabs-manager' ); ?></option>
    58                         </select>
    59                     </div>
    60                     <div class="bk-form-field">
     52                        <select name="tab_content_type" id="tab_content_type" required >
     53                            <?php foreach ( ptabsm_get_tab_content_type_options() as $option ) { ?>
     54                                <option value="<?php echo esc_attr( $option['value'] ); ?>" <?php selected( get_post_meta( $product_tab->ID, '_ptabsm_tab_content_type', true ), $option['value'] ); ?> <?php disabled( $option['disabled'] ); ?>>
     55                                    <?php echo esc_html( $option['label'] ); ?>
     56                                </option>
     57                            <?php } ?>
     58                        </select>
     59                    </div>
     60                    <div class="bk-form-field ptabsm_tab_content">
    6161                        <label for="tab_content">
    6262                            <?php esc_html_e( 'Description', 'product-tabs-manager' ); ?>
     
    7878                        ?>
    7979                    </div>
    80                     <?php endif; ?>
     80                        <?php
     81                        /*
     82                        * Hook: ptabsm_after_edit_product_tab_content.
     83                        *
     84                        * @param \WP_Post $product_tab Current tab object.
     85                        *
     86                        * @since 1.3.2
     87                        */
     88                        do_action( 'ptabsm_after_edit_product_tab_content', $product_tab );
     89                        ?>
     90                <?php endif; ?>
    8191                </div>
    8292            </div>
    83 
    8493            <!-- Tab Settings -->
    8594            <div class="bk-card">
  • product-tabs-manager/trunk/includes/Frontend/Products.php

    r3477358 r3493686  
    2929     */
    3030    public static function product_tabs( $tabs ) {
    31 
    3231        foreach ( ptabsm_get_default_tabs() as $key => $tab ) {
    3332            if ( ! array_key_exists( $key, $tabs ) ) {
     
    5049            }
    5150
    52             $tab_key = get_post_meta( $tab_id, '_ptabsm_tab_key', true );
     51            $tab_content_type = get_post_meta( $tab_id, '_ptabsm_tab_content_type', true );
     52            $tab_key          = get_post_meta( $tab_id, '_ptabsm_tab_key', true );
    5353            if ( $tab_key ) {
    5454                if ( ! array_key_exists( $tab_key, $tabs ) ) {
     
    7272                    $tabs[ $tab_key ]['title'] = apply_filters( 'ptabsm_product_tab_title', $tab_title, $tab_id );
    7373                }
     74            } elseif ( 'product_list' === $tab_content_type ) {
     75                $priority                        = get_post_meta( $tab_id, '_ptabsm_tab_priority', true );
     76                $tabs[ 'ptabsm_tab_' . $tab_id ] = array(
     77                    'title'    => apply_filters( 'ptabsm_product_tab_title', get_the_title( $tab_id ), $tab_id ),
     78                    'priority' => is_numeric( $priority ) ? intval( $priority ) : 100,
     79                    'callback' => function () use ( $tab_id ) {
     80                        /*
     81                        * Hook: ptabsm_product_tab_general_option_product_list.
     82                        *
     83                        * @param $tab_id tab ID.
     84                        *
     85                        * @since 1.3.2
     86                        */
     87                        do_action( 'ptabsm_product_tab_general_option_product_list', $tab_id );
     88                    },
     89                );
     90            } elseif ( 'qa' === $tab_content_type ) {
     91                $priority                        = get_post_meta( $tab_id, '_ptabsm_tab_priority', true );
     92                $tabs[ 'ptabsm_tab_' . $tab_id ] = array(
     93                    'title'    => apply_filters( 'ptabsm_product_tab_title', get_the_title( $tab_id ), $tab_id ),
     94                    'priority' => is_numeric( $priority ) ? intval( $priority ) : 100,
     95                    'callback' => function () use ( $tab_id ) {
     96                        /*
     97                        * Hook: ptabsm_product_tab_general_option_qa_list.
     98                        *
     99                        * @param $tab_id tab ID.
     100                        *
     101                        * @since 1.3.2
     102                        */
     103                        do_action( 'ptabsm_product_tab_general_option_qa_list', $tab_id );
     104                    },
     105                );
    74106            } else {
    75107                $priority                        = get_post_meta( $tab_id, '_ptabsm_tab_priority', true );
  • product-tabs-manager/trunk/includes/functions.php

    r3448691 r3493686  
    2626 */
    2727function ptabsm_get_default_tabs() {
    28     $default_tabs = get_option( 'ptabsm_ddefault_product_tabs', array() );
     28    $default_tabs = get_option( 'ptabsm_default_product_tabs', array() );
    2929
    3030    if ( empty( $default_tabs ) || ! is_array( $default_tabs ) ) {
     
    137137    return is_array( $default_tabs ) ? $default_tabs : array();
    138138}
     139
     140/**
     141 * Tab Content type option list
     142 *
     143 * @since 1.3.2
     144 * @return array
     145 */
     146function ptabsm_get_tab_content_type_options() {
     147    return apply_filters(
     148        'ptabsm_tab_content_type_option',
     149        array(
     150            array(
     151                'value'    => 'content',
     152                'label'    => esc_html__( 'General Content', 'product-tabs-manager' ),
     153                'disabled' => false,
     154            ),
     155            array(
     156                'value'    => 'qa',
     157                'label'    => esc_html__( 'Question/Answer ( Upgrade to PRO )', 'product-tabs-manager' ),
     158                'disabled' => true,
     159            ),
     160            array(
     161                'value'    => 'product_list',
     162                'label'    => esc_html__( 'Product List ( Upgrade to PRO )', 'product-tabs-manager' ),
     163                'disabled' => true,
     164            ),
     165        )
     166    );
     167}
  • product-tabs-manager/trunk/languages/product-tabs-manager.pot

    r3477358 r3493686  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Product Tabs Manager 1.3.2\n"
     5"Project-Id-Version: Product Tabs Manager 1.3.3\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/product-tabs-manager\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2026-03-08T09:55:39+00:00\n"
     12"POT-Creation-Date: 2026-03-29T05:53:16+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
     
    5252msgstr ""
    5353
    54 #: includes/Admin/Actions.php:132
     54#: includes/Admin/Actions.php:138
    5555msgid "You do not have permission to perform this action."
    5656msgstr ""
    5757
    58 #: includes/Admin/Actions.php:139
     58#: includes/Admin/Actions.php:145
    5959msgid "Invalid tabs data."
    6060msgstr ""
    6161
    62 #: includes/Admin/Actions.php:157
     62#: includes/Admin/Actions.php:163
    6363msgid "Tabs order updated successfully."
    6464msgstr ""
    6565
    66 #: includes/Admin/Actions.php:162
     66#: includes/Admin/Actions.php:168
    6767msgid "Failed to update tabs order."
    6868msgstr ""
    6969
    70 #: includes/Admin/Actions.php:177
    71 #: includes/Admin/Actions.php:228
     70#: includes/Admin/Actions.php:183
     71#: includes/Admin/Actions.php:234
    7272msgid "No, search term provided."
    7373msgstr ""
    7474
    75 #: includes/Admin/Actions.php:280
     75#: includes/Admin/Actions.php:286
    7676msgid "No, user name provided."
    7777msgstr ""
     
    118118
    119119#: includes/Admin/ListTables/ProductTabsListTable.php:131
    120 #: includes/Admin/views/product-tabs/add.php:33
    121 #: includes/Admin/views/product-tabs/edit.php:35
     120#: includes/Admin/views/product-tabs/add.php:32
     121#: includes/Admin/views/product-tabs/edit.php:34
    122122msgid "Title"
    123123msgstr ""
     
    138138
    139139#: includes/Admin/ListTables/ProductTabsListTable.php:135
    140 #: includes/Admin/views/product-tabs/add.php:135
    141 #: includes/Admin/views/product-tabs/edit.php:163
     140#: includes/Admin/views/product-tabs/add.php:142
     141#: includes/Admin/views/product-tabs/edit.php:172
    142142msgid "Status"
    143143msgstr ""
     
    149149#: includes/Admin/ListTables/ProductTabsListTable.php:174
    150150#: includes/Admin/ListTables/ProductTabsListTable.php:220
    151 #: includes/Admin/views/product-tabs/edit.php:178
     151#: includes/Admin/views/product-tabs/edit.php:187
    152152msgid "Delete"
    153153msgstr ""
     
    158158
    159159#: includes/Admin/ListTables/ProductTabsListTable.php:256
    160 #: includes/Admin/views/product-tabs/add.php:138
    161 #: includes/Admin/views/product-tabs/edit.php:166
     160#: includes/Admin/views/product-tabs/add.php:145
     161#: includes/Admin/views/product-tabs/edit.php:175
    162162msgid "Active"
    163163msgstr ""
    164164
    165165#: includes/Admin/ListTables/ProductTabsListTable.php:256
    166 #: includes/Admin/views/product-tabs/add.php:139
    167 #: includes/Admin/views/product-tabs/edit.php:167
     166#: includes/Admin/views/product-tabs/add.php:146
     167#: includes/Admin/views/product-tabs/edit.php:176
    168168msgid "Inactive"
    169169msgstr ""
     
    289289msgstr ""
    290290
    291 #: includes/Admin/views/product-tabs/add.php:25
    292 #: includes/Admin/views/product-tabs/edit.php:27
     291#: includes/Admin/views/product-tabs/add.php:24
     292#: includes/Admin/views/product-tabs/edit.php:26
    293293msgid "General Options"
    294294msgstr ""
    295295
    296 #: includes/Admin/views/product-tabs/add.php:27
    297 #: includes/Admin/views/product-tabs/edit.php:29
     296#: includes/Admin/views/product-tabs/add.php:26
     297#: includes/Admin/views/product-tabs/edit.php:28
    298298msgid "Add tab title and description"
    299299msgstr ""
    300300
    301 #: includes/Admin/views/product-tabs/add.php:36
    302 #: includes/Admin/views/product-tabs/edit.php:38
     301#: includes/Admin/views/product-tabs/add.php:35
     302#: includes/Admin/views/product-tabs/edit.php:37
    303303msgid "Enter tab title..."
    304304msgstr ""
    305305
    306 #: includes/Admin/views/product-tabs/add.php:41
    307 #: includes/Admin/views/product-tabs/edit.php:44
     306#: includes/Admin/views/product-tabs/add.php:39
     307#: includes/Admin/views/product-tabs/edit.php:42
    308308msgid "Tab Priority"
    309309msgstr ""
    310310
    311 #: includes/Admin/views/product-tabs/add.php:44
    312 #: includes/Admin/views/product-tabs/edit.php:47
     311#: includes/Admin/views/product-tabs/add.php:42
     312#: includes/Admin/views/product-tabs/edit.php:45
    313313msgid "Enter the tab priority. The tab will be sorted according to the priority."
    314314msgstr ""
    315315
    316 #: includes/Admin/views/product-tabs/add.php:48
    317 #: includes/Admin/views/product-tabs/edit.php:51
     316#: includes/Admin/views/product-tabs/add.php:46
     317#: includes/Admin/views/product-tabs/edit.php:49
    318318msgid "Content Type"
    319 msgstr ""
    320 
    321 #: includes/Admin/views/product-tabs/add.php:52
    322 #: includes/Admin/views/product-tabs/edit.php:55
    323 msgid "General Content"
    324 msgstr ""
    325 
    326 #: includes/Admin/views/product-tabs/add.php:53
    327 #: includes/Admin/views/product-tabs/edit.php:56
    328 msgid "Question/Answer ( Upgrade to PRO )"
    329 msgstr ""
    330 
    331 #: includes/Admin/views/product-tabs/add.php:54
    332 #: includes/Admin/views/product-tabs/edit.php:57
    333 msgid "Product List ( Upgrade to PRO )"
    334319msgstr ""
    335320
     
    340325msgstr ""
    341326
    342 #: includes/Admin/views/product-tabs/add.php:83
    343 #: includes/Admin/views/product-tabs/edit.php:87
     327#: includes/Admin/views/product-tabs/add.php:90
     328#: includes/Admin/views/product-tabs/edit.php:96
    344329msgid "Tab Settings"
    345330msgstr ""
    346331
    347 #: includes/Admin/views/product-tabs/add.php:85
    348 #: includes/Admin/views/product-tabs/edit.php:89
     332#: includes/Admin/views/product-tabs/add.php:92
     333#: includes/Admin/views/product-tabs/edit.php:98
    349334msgid "Settings for tab"
    350335msgstr ""
    351336
    352 #: includes/Admin/views/product-tabs/add.php:90
    353 #: includes/Admin/views/product-tabs/edit.php:95
     337#: includes/Admin/views/product-tabs/add.php:97
     338#: includes/Admin/views/product-tabs/edit.php:104
    354339msgid "Visible Type"
    355340msgstr ""
    356341
    357 #: includes/Admin/views/product-tabs/add.php:92
    358 #: includes/Admin/views/product-tabs/edit.php:97
     342#: includes/Admin/views/product-tabs/add.php:99
     343#: includes/Admin/views/product-tabs/edit.php:106
    359344msgid "All Products"
    360345msgstr ""
    361346
    362 #: includes/Admin/views/product-tabs/add.php:93
    363347#: includes/Admin/views/product-tabs/add.php:100
    364 #: includes/Admin/views/product-tabs/edit.php:98
    365 #: includes/Admin/views/product-tabs/edit.php:106
     348#: includes/Admin/views/product-tabs/add.php:107
     349#: includes/Admin/views/product-tabs/edit.php:107
     350#: includes/Admin/views/product-tabs/edit.php:115
    366351msgid "Specific Products"
    367352msgstr ""
    368353
    369 #: includes/Admin/views/product-tabs/add.php:94
    370 #: includes/Admin/views/product-tabs/add.php:108
    371 #: includes/Admin/views/product-tabs/edit.php:99
    372 #: includes/Admin/views/product-tabs/edit.php:124
     354#: includes/Admin/views/product-tabs/add.php:101
     355#: includes/Admin/views/product-tabs/add.php:115
     356#: includes/Admin/views/product-tabs/edit.php:108
     357#: includes/Admin/views/product-tabs/edit.php:133
    373358msgid "Specific Categories"
    374359msgstr ""
    375360
    376 #: includes/Admin/views/product-tabs/add.php:96
    377 #: includes/Admin/views/product-tabs/edit.php:101
     361#: includes/Admin/views/product-tabs/add.php:103
     362#: includes/Admin/views/product-tabs/edit.php:110
    378363msgid "Choose where to show this tab: on All Products, Specific Products, or Specific Categories—whichever suits your needs."
    379364msgstr ""
    380365
    381 #: includes/Admin/views/product-tabs/add.php:102
    382 #: includes/Admin/views/product-tabs/edit.php:108
     366#: includes/Admin/views/product-tabs/add.php:109
     367#: includes/Admin/views/product-tabs/edit.php:117
    383368msgid "Search products"
    384369msgstr ""
    385370
    386 #: includes/Admin/views/product-tabs/add.php:104
    387 #: includes/Admin/views/product-tabs/edit.php:119
     371#: includes/Admin/views/product-tabs/add.php:111
     372#: includes/Admin/views/product-tabs/edit.php:128
    388373msgid "Use this box to select products for this tab. Search by category name and choose multiple products to include."
    389374msgstr ""
    390375
    391 #: includes/Admin/views/product-tabs/add.php:110
    392 #: includes/Admin/views/product-tabs/edit.php:126
     376#: includes/Admin/views/product-tabs/add.php:117
     377#: includes/Admin/views/product-tabs/edit.php:135
    393378msgid "Search categories"
    394379msgstr ""
    395380
    396 #: includes/Admin/views/product-tabs/add.php:112
    397 #: includes/Admin/views/product-tabs/edit.php:138
     381#: includes/Admin/views/product-tabs/add.php:119
     382#: includes/Admin/views/product-tabs/edit.php:147
    398383msgid "Use this box to select categories for this tab. Search by category name and choose multiple categories to include."
    399384msgstr ""
    400385
    401 #: includes/Admin/views/product-tabs/add.php:129
    402 #: includes/Admin/views/product-tabs/edit.php:157
     386#: includes/Admin/views/product-tabs/add.php:136
     387#: includes/Admin/views/product-tabs/edit.php:166
    403388msgid "Actions"
    404389msgstr ""
    405390
    406 #: includes/Admin/views/product-tabs/add.php:148
     391#: includes/Admin/views/product-tabs/add.php:155
    407392msgid "Publish"
    408393msgstr ""
     
    428413msgstr ""
    429414
    430 #: includes/Admin/views/product-tabs/edit.php:181
     415#: includes/Admin/views/product-tabs/edit.php:190
    431416msgid "Update"
    432417msgstr ""
     
    475460#: includes/functions.php:41
    476461msgid "Reviews"
     462msgstr ""
     463
     464#: includes/functions.php:152
     465msgid "General Content"
     466msgstr ""
     467
     468#: includes/functions.php:157
     469msgid "Question/Answer ( Upgrade to PRO )"
     470msgstr ""
     471
     472#: includes/functions.php:162
     473msgid "Product List ( Upgrade to PRO )"
    477474msgstr ""
    478475
  • product-tabs-manager/trunk/product-tabs-manager.php

    r3477358 r3493686  
    44 * Plugin URI:           https://pluginever.com/plugins/product-tabs-manager-pro/
    55 * Description:          Product Tabs Manager is a powerful and user-friendly WooCommerce plugin that lets you create, customize, and fully manage product tabs, including default WooCommerce tabs, without writing a single line of code.
    6  * Version:              1.3.2
     6 * Version:              1.3.3
    77 * Requires at least:    5.2
    88 * Tested up to:         6.9
     
    1515 * Domain Path:          /languages
    1616 * WC requires at least: 3.0.0
    17  * WC tested up to:      10.5
     17 * WC tested up to:      10.6
    1818 * Requires Plugins:     woocommerce
    1919 *
  • product-tabs-manager/trunk/readme.txt

    r3477358 r3493686  
    33Tags: woocommerce tabs, product tabs, custom tabs, woocommerce product tabs, tab manager
    44Tested up to: 6.9
    5 Stable tag: 1.3.2
     5Stable tag: 1.3.3
    66License: GPL v2 or later
    77License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    546546
    547547== Changelog ==
     548= 1.3.3 ( 29th March 2026 ) =
     549* New: Added new tab type for displaying list of products in a tab
     550* New: Added new tab type for displaying FAQs in a tab
     551* Fix: Few minor bugs and issues
     552* Compatibility: Compatible with the latest WooCommerce version (10.6)
    548553
    549554= 1.3.2 ( 8th March 2026 ) =
  • product-tabs-manager/trunk/vendor/composer/installed.php

    r3477358 r3493686  
    44        'pretty_version' => 'dev-master',
    55        'version' => 'dev-master',
    6         'reference' => 'df5801e7c33263ff5fa3b763207a54a1d74eabb6',
     6        'reference' => '60aa5d52efb53ff193323ff73f4fcd28b8e54bb3',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    3232            'pretty_version' => 'dev-master',
    3333            'version' => 'dev-master',
    34             'reference' => 'df5801e7c33263ff5fa3b763207a54a1d74eabb6',
     34            'reference' => '60aa5d52efb53ff193323ff73f4fcd28b8e54bb3',
    3535            'type' => 'wordpress-plugin',
    3636            'install_path' => __DIR__ . '/../../',
Note: See TracChangeset for help on using the changeset viewer.