Plugin Directory

Changeset 2647967


Ignore:
Timestamp:
12/22/2021 04:31:16 PM (4 years ago)
Author:
tivnet
Message:

2.8.9

Location:
wpglobus/trunk
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • wpglobus/trunk/configs/rank-math-seo.json

    r2299297 r2647967  
    33    "*":{"file":"vendor/rank-math-seo/class-wpglobus-vendor-rank_math_seo.php","class":"WPGlobus_Vendor_RankMathSEO"}
    44  },
     5  "term_meta_fields": {   
     6        "rank_math_description": {},
     7        "rank_math_seo_score": {},
     8        "rank_math_title": {},
     9        "rank_math_focus_keyword": {}
     10  },
    511  "post_ml_fields": {   
    6     "rank_math_title": {},
    7     "rank_math_description": {},
    8     "rank_math_focus_keyword": {}
     12        "rank_math_title": {},
     13        "rank_math_description": {},
     14        "rank_math_focus_keyword": {},
     15        "rank_math_seo_score": {}
    916  },
    1017  "wp_options": {
    11     "blogname": {},
    12     "blogdescription": null
     18        "blogname": {},
     19        "blogdescription": null
    1320  }
    1421}
  • wpglobus/trunk/data/wpglobus-product-info.json

    r2632740 r2647967  
    1 {"multilingual-woocommerce-nets-netaxept":{"title":"{:en}Multilingual WooCommerce Nets Netaxept{:}{:ru}\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce Nets Netaxept{:}","_api_new_version":"1.0.3","_api_tested_up_to":"4.9.8"},"wpglobus-multi-currency":{"title":"{:en}Multi-Currency for WooCommerce{:}{:ru}WPGlobus - \u041c\u0443\u043b\u044c\u0442\u0438\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce{:}","_api_new_version":"1.1.1","_api_tested_up_to":"4.9.4"},"wpglobus-mobile-menu":{"title":"{:en}WPGlobus Mobile Menu{:}{:ru}WPGlobus Mobile Menu{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.6"},"wpglobus-for-ultimate-member":{"title":"{:en}WPGlobus for Ultimate Member{:}{:ru}WPGlobus \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Ultimate Member{:}","_api_new_version":"1.1.0","_api_tested_up_to":"5.6"},"wpglobus-menu-visibility":{"title":"WPGlobus Menu Visibility","_api_new_version":"2.0.0","_api_tested_up_to":"5.6"},"wpglobus-for-bridge-theme":{"title":"{:en}WPGlobus for the \"Bridge\" theme{:}{:ru}WPGlobus \u0434\u043b\u044f \u0442\u0435\u043c\u044b Bridge{:}","_api_new_version":"2.4.0","_api_tested_up_to":"5.5"},"wpglobus-language-widgets":{"title":"{:en}WPGlobus Language Widgets{:}{:ru}\u042f\u0437\u044b\u043a\u0438 WPGlobus \u0434\u043b\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432{:}","_api_new_version":"2.1.0","_api_tested_up_to":"5.7"},"wpglobus-multilingual-popups":{"title":"{:en}WPGlobus Multilingual Popups{:}{:ru}WPGlobus Multilingual Popups{:}","_api_new_version":"1.4.0","_api_tested_up_to":"5.7"},"woocommerce-wpglobus":{"title":"{:en}WPGlobus for WooCommerce{:}{:ru}\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 WooCommerce WPGlobus{:}","_api_new_version":"5.8.5","_api_tested_up_to":"5.8"},"wpglobus-multilingual-notices":{"title":"{:en}WPGlobus Multilingual Notices{:}{:ru}WPGlobus - \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f{:}","_api_new_version":"2.9.2","_api_tested_up_to":"5.8"},"wpglobus-header-images":{"title":"{:en}WPGlobus Header Images{:}{:ru}WPGlobus Header Images{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.8"},"wpglobus-plus":{"title":"{:en}WPGlobus Plus multilingual extension{:}{:ru}WPGlobus \u041f\u043b\u044e\u0441{:}","_api_new_version":"1.8.3","_api_tested_up_to":"5.8"}}
     1{"multilingual-woocommerce-nets-netaxept":{"title":"{:en}Multilingual WooCommerce Nets Netaxept{:}{:ru}\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce Nets Netaxept{:}","_api_new_version":"1.0.3","_api_tested_up_to":"4.9.8"},"wpglobus-multi-currency":{"title":"{:en}Multi-Currency for WooCommerce{:}{:ru}WPGlobus - \u041c\u0443\u043b\u044c\u0442\u0438\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f WooCommerce{:}","_api_new_version":"1.1.1","_api_tested_up_to":"4.9.4"},"wpglobus-mobile-menu":{"title":"{:en}WPGlobus Mobile Menu{:}{:ru}WPGlobus Mobile Menu{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.6"},"wpglobus-for-ultimate-member":{"title":"{:en}WPGlobus for Ultimate Member{:}{:ru}WPGlobus \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Ultimate Member{:}","_api_new_version":"1.1.0","_api_tested_up_to":"5.6"},"wpglobus-menu-visibility":{"title":"WPGlobus Menu Visibility","_api_new_version":"2.0.0","_api_tested_up_to":"5.6"},"wpglobus-for-bridge-theme":{"title":"{:en}WPGlobus for the \"Bridge\" theme{:}{:ru}WPGlobus \u0434\u043b\u044f \u0442\u0435\u043c\u044b Bridge{:}","_api_new_version":"2.4.0","_api_tested_up_to":"5.5"},"wpglobus-language-widgets":{"title":"{:en}WPGlobus Language Widgets{:}{:ru}\u042f\u0437\u044b\u043a\u0438 WPGlobus \u0434\u043b\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432{:}","_api_new_version":"2.1.0","_api_tested_up_to":"5.7"},"wpglobus-multilingual-popups":{"title":"{:en}WPGlobus Multilingual Popups{:}{:ru}WPGlobus Multilingual Popups{:}","_api_new_version":"1.4.0","_api_tested_up_to":"5.7"},"wpglobus-multilingual-notices":{"title":"{:en}WPGlobus Multilingual Notices{:}{:ru}WPGlobus - \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f{:}","_api_new_version":"2.9.2","_api_tested_up_to":"5.8"},"wpglobus-header-images":{"title":"{:en}WPGlobus Header Images{:}{:ru}WPGlobus Header Images{:}","_api_new_version":"2.2.0","_api_tested_up_to":"5.8"},"woocommerce-wpglobus":{"title":"{:en}WPGlobus for WooCommerce{:}{:ru}\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 WooCommerce WPGlobus{:}","_api_new_version":"6.0.0","_api_tested_up_to":"5.8"},"wpglobus-plus":{"title":"{:en}WPGlobus Plus multilingual extension{:}{:ru}WPGlobus \u041f\u043b\u044e\u0441{:}","_api_new_version":"1.8.4","_api_tested_up_to":"5.8"}}
  • wpglobus/trunk/includes/admin/meta/class-wpglobus-meta.php

    r2410627 r2647967  
    11<?php
    22/**
    3  * Class WPGlobus_Meta
     3 * File: class-wpglobus-meta.php
    44 *
    55 * @since   1.9.17
    66 * @since   1.9.25 Added build_multilingual_string function.
     7 * @since   2.8.9 Added support for term meta.
    78 *
    89 * @package WPGlobus\Admin\Meta
     
    4849            self::$meta_fields = $meta_fields;
    4950            self::$builder     = $builder;
    50 
    51             if ( is_admin() ) {
     51           
     52            /**
     53             * @since 2.8.9 Added checking REST API request.
     54             */
     55            if ( is_admin() || WPGlobus_WP::is_rest_api_request() ) {
     56               
    5257                add_filter( 'get_post_metadata', array( __CLASS__, 'filter__post_metadata' ), 5, 4 );
    5358
     
    5863
    5964                add_filter( 'delete_post_metadata', array( __CLASS__, 'filter__delete_metadata' ), 5, 5 );
    60             }
    61 
     65               
     66                /**
     67                 * @since 2.8.9
     68                 */
     69                add_filter( 'get_term_metadata', array( __CLASS__, 'filter__term_metadata' ), 5, 4 );
     70   
     71                /**
     72                 * @since 2.8.9
     73                 */
     74                add_filter( 'update_term_metadata', array( __CLASS__, 'filter__update_term_metadata' ), 5, 5 );
     75               
     76                /**
     77                 * @todo Test deleting term meta with Yoast and Rank Math(REST query).
     78                 * @since 2.8.9
     79                 */
     80                // add_filter( 'delete_term_metadata', array( __CLASS__, 'filter__delete_term_metadata' ), 5, 5 );
     81            }
    6282        }
    6383
     
    7696
    7797            return self::$instance;
     98        }
     99
     100        /**
     101         * Update meta data.
     102         *
     103         * Internal use.
     104         * @since 2.8.9
     105         */
     106        protected static function _update_metadata( $check, $object_id, $meta_key, $meta_value, $prev_value, $meta_type = '' ) {
     107
     108            if ( empty( $meta_type ) ) {
     109                return $check;
     110            }
     111
     112            /** @global wpdb $wpdb */
     113            global $wpdb;
     114
     115            $table = _get_meta_table( $meta_type );
     116            if ( ! $table ) {
     117                return false;
     118            }
     119
     120            $column    = $meta_type . '_id';
     121            $id_column = 'meta_id';
     122
     123            $raw_meta_key = $meta_key;
     124
     125            if ( empty( $prev_value ) ) {
     126                $old_value = get_metadata_raw( $meta_type, $object_id, $meta_key );
     127                if ( is_countable( $old_value ) && count( $old_value ) === 1 ) {
     128                    if ( $old_value[0] === $meta_value ) {
     129                        return false;
     130                    }
     131                }
     132            }           
     133
     134            $_meta_value = $meta_value;
     135
     136            $meta_value = maybe_serialize( $meta_value );
     137
     138            /**
     139             * Don't auto-modify this SQL query.
     140             */
     141            // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
     142            $prev_meta = $wpdb->get_row( $wpdb->prepare( "SELECT $id_column, meta_value FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) );
     143           
     144            if ( is_null( $prev_meta ) ) {
     145
     146                $_passed_value = $_meta_value;
     147
     148                if ( ! empty( $_passed_value ) && WPGlobus::Config()->default_language !== self::$builder->get_language() ) {
     149                    // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
     150                    if ( WPGlobus_Core::has_translations( $_passed_value ) ) {
     151                        /**
     152                         * We get multilingual $meta_value. Let save it as is.
     153                         */
     154                    } else {
     155                        $_passed_value = self::build_multilingual_string( array( self::$builder->get_language() => $_passed_value ) );
     156                    }
     157                }
     158
     159                return add_metadata( $meta_type, $object_id, $raw_meta_key, $_passed_value );
     160            }
     161           
     162            /**
     163             * WPGlobus Core.
     164             * We get $meta_value in language that can be retrieved with self::$builder->get_language().
     165             */
     166
     167            // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
     168            if ( WPGlobus_Core::has_translations( $meta_value ) ) {
     169                /**
     170                 * We get multilingual $meta_value. Let save it as is.
     171                 */
     172            } else {
     173
     174                $_new_ml_array = array();
     175
     176                if ( WPGlobus_Core::has_translations($prev_meta->meta_value) ) {
     177
     178                    foreach ( WPGlobus::Config()->enabled_languages as $language ) :
     179
     180                        if ( $language === self::$builder->get_language() ) {
     181
     182                            if ( ! empty( $meta_value ) ) {
     183                                $_new_ml_array[ $language ] = $meta_value;
     184                            }
     185                        } else {
     186
     187                            $_value = WPGlobus_Core::text_filter( $prev_meta->meta_value, $language, WPGlobus::RETURN_EMPTY );
     188
     189                            if ( '' !== $_value ) {
     190                                $_new_ml_array[ $language ] = $_value;
     191                            }
     192                        }
     193
     194                    endforeach;
     195
     196                    $_new_value = self::build_multilingual_string( $_new_ml_array );
     197
     198                } else {
     199
     200                    if ( WPGlobus::Config()->default_language === self::$builder->get_language() ) {
     201                        $_new_ml_array[ WPGlobus::Config()->default_language ] = $meta_value;
     202                    } else {
     203                        $_new_ml_array[ WPGlobus::Config()->default_language ] = $prev_meta->meta_value;
     204                        if ( ! empty( $meta_value ) ) {
     205                            $_new_ml_array[ self::$builder->get_language() ] = $meta_value;
     206                        }
     207                    }
     208
     209                    $_new_value = self::build_multilingual_string( $_new_ml_array );
     210
     211                }
     212
     213                if ( ! empty( $_new_value ) ) {
     214                    $meta_value = $_new_value;
     215                }
     216            }
     217
     218            $data  = compact( 'meta_value' );
     219            $where = array(
     220                $column    => $object_id,
     221                'meta_key' => $meta_key,
     222            );
     223
     224            $result = $wpdb->update( $table, $data, $where );
     225
     226            if ( ! $result ) {
     227                return false;
     228            }
     229
     230            wp_cache_delete( $object_id, $meta_type . '_meta' );
     231
     232            return true;           
     233        }
     234
     235        /**
     236         * Filter term meta data.
     237         *
     238         * @since 2.8.9
     239         */
     240        public static function filter__term_metadata( $check, $object_id, $meta_key, $single ) {
     241
     242            if ( empty( self::$meta_fields ) ) {
     243                return $check;
     244            }
     245
     246            if ( ! self::meta_key_exists( $meta_key ) ) {
     247                return $check;
     248            }
     249           
     250            if ( empty( self::$builder->get_language() ) ) {
     251                /**
     252                 * Prevent update term meta when $builder is not set.
     253                 */
     254                return $check;
     255            }
     256
     257            $meta_type = 'term';
     258
     259            $meta_cache = wp_cache_get( $object_id, $meta_type . '_meta' );
     260
     261            if ( ! $meta_cache ) {
     262                $meta_cache = update_meta_cache( $meta_type, array( $object_id ) );
     263                $meta_cache = $meta_cache[ $object_id ];
     264            }
     265           
     266            if ( ! empty( $meta_cache[$meta_key][0] ) && WPGlobus_Core::has_translations( $meta_cache[$meta_key][0] ) ) {
     267               
     268                $meta_cache[$meta_key][0] = WPGlobus_Core::text_filter(
     269                    $meta_cache[$meta_key][0],
     270                    self::$builder->get_language(),
     271                    WPGlobus::RETURN_EMPTY
     272                );
     273               
     274                wp_cache_replace(
     275                    $object_id,
     276                    $meta_cache,
     277                    $meta_type . '_meta'
     278                );
     279            }
     280           
     281            return $check;
     282        }
     283       
     284        /**
     285         * Update term meta data.
     286         *
     287         * @since 2.8.9
     288         */
     289        public static function filter__update_term_metadata( $check, $object_id, $meta_key, $meta_value, $prev_value ) {
     290
     291            if ( empty( self::$meta_fields ) ) {
     292                return $check;
     293            }
     294
     295            if ( ! self::meta_key_exists( $meta_key ) ) {
     296                return $check;
     297            }
     298           
     299            if ( empty( self::$builder->get_language() ) ) {
     300                /**
     301                 * Prevent update term meta when $builder is not set.
     302                 */
     303                return $check;
     304            }
     305
     306            return self::_update_metadata( $check, $object_id, $meta_key, $meta_value, $prev_value, 'term' );
    78307        }
    79308
     
    348577
    349578            return $result;
    350 
    351579        }
    352580
     
    544772
    545773endif;
     774
     775# --- EOF
  • wpglobus/trunk/includes/builders/class-wpglobus-builders.php

    r2614698 r2647967  
    249249                'ajax_actions' => '',
    250250                'builder_support' => true, // @since 2.4.12
     251                'taxonomy'        => '',   // @since 2.8.9
     252                'tag_ID'          => '',   // @since 2.8.9
     253                'rest_request'    => WPGlobus_WP::is_rest_api_request(), // @since 2.8.9
    251254            );
    252255
     
    287290
    288291            if ( $init ) {
    289 
    290                 //$builder = false;
    291292
    292293                self::get_addons();
  • wpglobus/trunk/includes/builders/class-wpglobus-config-builder.php

    r2566681 r2647967  
    8282                    }
    8383
    84                     $this->language          = $this->get_language();
    85                     $this->attrs['language'] = $this->language;
     84                    /**
     85                     * @since 2.8.9 Get REST API request language.
     86                     * For example for setting language @see wpglobus\includes\builders\rank_math_seo\class-wpglobus-builder-rank_math_seo.php
     87                     */
     88                    if ( isset($builder['rest_request']) && $builder['rest_request'] && isset($builder['rest_language']) ) {
     89                        $this->set_language( $builder['rest_language'] );
     90                    } else {
     91                        $this->language          = $this->get_language();
     92                        $this->attrs['language'] = $this->language;
     93                    }
    8694
    8795                } else {
     
    95103
    96104            }
    97 
    98105        }
    99106
  • wpglobus/trunk/includes/builders/rank_math_seo/class-wpglobus-builder-rank_math_seo.php

    r2299297 r2647967  
    44 *
    55 * @since 2.4.3
     6 * @since 2.8.9 Added support REST API request.
    67 *
    78 * @package WPGlobus\Builders\RankMathSEO.
     
    4748                return $attrs;
    4849               
    49             } elseif ( 'term.php' === $pagenow ) {
     50            } else if ( 'term.php' === $pagenow ) {
     51               
     52                /**
     53                 * Current language will be set correctrly from $_REQUEST['language'] @see wpglobus\includes\builders\class-wpglobus-config-builder.php
     54                 */
    5055               
    5156                $tax = empty( $_GET['taxonomy'] ) ? false : sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ); // phpcs:ignore WordPress.CSRF.NonceVerification
     57                $tag_ID = empty( $_GET['tag_ID'] ) ? false : sanitize_text_field( wp_unslash( $_GET['tag_ID'] ) ); // phpcs:ignore WordPress.CSRF.NonceVerification
    5258               
    5359                if ( $tax ) {
     
    6066                        $attrs['post_type']     = ''; // reset post type.
    6167                        $attrs['taxonomy']      = $tax;
     68                        $attrs['tag_ID']        = $tag_ID;
    6269                        $attrs['builder_page']  = true;
    6370                    }
     71
     72                    return $attrs;
     73                }
     74               
     75            } else if ( 'edit.php' === $pagenow ) {
     76               
     77                // return $attrs;               
     78               
     79            } else if ( isset( $attrs['rest_request'] ) && $attrs['rest_request'] ) {
     80
     81                /**
     82                 * Get post ID, term, term ID, language from REST API request.
     83                 *
     84                 * @since 2.8.9
     85                 */
     86                if ( ! empty( $_SERVER['HTTP_REFERER'] ) ) {
     87
     88                    preg_match( '/\?post=(?<postID>[^&]+)/', $_SERVER['HTTP_REFERER'], $matches );
     89
     90                    if ( ! empty($matches['postID']) && (int) $matches['postID'] > 0 ) {
     91                       
     92                        $attrs['post_id'] = $matches['postID'];
    6493                   
    65                     return $attrs;
    66                 }           
     94                    } else {
     95                       
     96                        preg_match( '/term\.php\?taxonomy=(?<tax>[^&]+)&tag_ID=(?<id>[^&]+)/', $_SERVER['HTTP_REFERER'], $matches );
     97                        preg_match( '/&language=(?<language>[a-z]{2})/', $_SERVER['HTTP_REFERER'], $lang_matches );
     98                       
     99                        if ( ! empty($matches['tax']) && ! empty($matches['id']) && (int) $matches['id'] > 0 ) {
     100
     101                            $attrs['taxonomy'] = $matches['tax'];
     102                            $attrs['tag_ID'] = $matches['id'];
     103
     104                            /**
     105                             * Get language for REST API request.
     106                             */
     107                            if ( ! empty( $lang_matches['language'] ) ) {
     108                                $attrs['rest_language'] = $lang_matches['language'];
     109                            }
     110                           
     111                        }
     112                    }
     113                }
     114               
     115                $attrs['builder_page'] = true;
     116
     117                return $attrs;
    67118            }
    68119           
  • wpglobus/trunk/includes/builders/rank_math_seo/class-wpglobus-rank_math_seo-functions.php

    r2299297 r2647967  
    44 *
    55 * @since 2.4.3
     6 * @since 2.8.9 Added support multilingual columns on `edit.php` page.
    67 *
    78 * @package WPGlobus\Builders\RankMathSEO.
     
    3536         */
    3637        public static function controller() {
    37 
    38             if ( empty( $_POST['nonce_CMB2phprank_math_metabox'] ) || empty( $_POST['action'] ) ) {
     38           
     39            if ( WPGlobus_WP::is_pagenow( 'edit.php' ) ) {
     40               
    3941                /**
    40                  * Not `Rank Math SEO`.
     42                 * To translate SEO columns on `edit.php` page.
     43                 *
     44                 * @since 2.8.9
    4145                 */
    42                 return;
    43             }
    44 
    45             global $pagenow;
    46 
    47             if ( ! empty( $_POST[  WPGlobus::get_language_meta_key() ] ) ) {
    48                 self::$current_language = sanitize_text_field( $_POST[  WPGlobus::get_language_meta_key() ] );
    49             }
    50            
    51             if ( 'edit-tags.php' === $pagenow && 'editedtag' === $_POST['action'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
    52                 /**
    53                  * Update button was clicked.
    54                  */
    55                 self::build_ml_description();
    56             }
    57 
    58             add_filter( 'wp_update_term_data', array( __CLASS__, 'filter__update_term_data' ), 5, 4 );
     46                add_filter( 'get_post_metadata', array( __CLASS__, 'filter__post_metadata' ), 2, 4 );
     47            }               
     48
     49            if ( is_admin() ) {
     50
     51                if ( empty( $_POST['nonce_CMB2phprank_math_metabox'] ) || empty( $_POST['action'] ) ) {
     52                    /**
     53                     * Not `Rank Math SEO`.
     54                     */
     55                    return;
     56                }
     57
     58                global $pagenow;
     59
     60                if ( ! empty( $_POST[  WPGlobus::get_language_meta_key() ] ) ) {
     61                    self::$current_language = sanitize_text_field( $_POST[  WPGlobus::get_language_meta_key() ] );
     62                }
     63               
     64                if ( 'edit-tags.php' === $pagenow && 'editedtag' === $_POST['action'] ) { // phpcs:ignore WordPress.CSRF.NonceVerification
     65                    /**
     66                     * Update button was clicked.
     67                     */
     68                    self::build_ml_description();
     69                }
     70
     71                add_filter( 'wp_update_term_data', array( __CLASS__, 'filter__update_term_data' ), 5, 4 );
     72            }
    5973        }
    6074
     75        /**
     76         * @since 2.8.9
     77         */
     78        public static function filter__post_metadata( $check, $object_id, $meta_key, $single ) {
     79
     80            /**
     81             * @todo Get keys from builder.
     82             * @since 2.8.9
     83             */
     84            $enabled_keys = array(
     85                'rank_math_title',
     86                'rank_math_description',
     87                'rank_math_focus_keyword',
     88                'rank_math_seo_score'
     89            );
     90
     91            if ( ! in_array( $meta_key, $enabled_keys ) ) {
     92                return $check;
     93            }
     94
     95            $meta_type = 'post';
     96
     97            $meta_cache = wp_cache_get( $object_id, $meta_type . '_meta' );
     98
     99            if ( ! $meta_cache ) {
     100                return $check;
     101            }
     102           
     103            if ( ! empty( $meta_cache[$meta_key][0] ) && WPGlobus_Core::has_translations( $meta_cache[$meta_key][0] ) ) {
     104               
     105                $meta_cache[$meta_key][0] = WPGlobus_Core::text_filter( $meta_cache[$meta_key][0], WPGlobus::Config()->language );
     106               
     107                wp_cache_replace(
     108                    $object_id,
     109                    $meta_cache,
     110                    $meta_type . '_meta'
     111                );
     112            }
     113
     114            return $check;
     115        }
     116       
    61117        /**
    62118         * Build multilingual description.
  • wpglobus/trunk/includes/class-wpglobus-config-vendor.php

    r2299297 r2647967  
    11<?php
    22/**
    3  * Class WPGlobus_Config_Vendor
     3 * File: class-wpglobus-config-vendor.php
    44 *
    55 * @package WPGlobus
     
    4141
    4242        /**
     43         * @since 2.8.9
     44         * @var array|null
     45         */
     46        protected static $term_meta_fields = null;
     47
     48        /**
     49         * @since 2.8.9
     50         * @var array|null
     51         */
     52        protected static $term_ml_fields = null;
     53
     54        /**
    4355         * @var array|null
    4456         */
     
    7082            self::get_config_files();
    7183            self::parse_config();
    72 
    7384        }
    7485
     
    91102         * Get meta fields.
    92103         *
     104         * @since 2.8.9 Return term and post meta fields.
     105         *
    93106         * @return array|false
    94107         */
    95108        public static function get_meta_fields() {
    96             if ( is_null( self::$post_meta_fields ) ) {
    97                 return false;
    98             }
    99 
    100             return self::$post_meta_fields;
     109       
     110            $meta_fields = false;
     111           
     112            if ( ! is_null( self::$post_meta_fields ) && ! empty( self::$post_meta_fields )  ) {
     113                $meta_fields = self::$post_meta_fields;
     114            }
     115
     116            if ( ! is_null( self::$term_meta_fields ) && ! empty( self::$term_meta_fields )  ) {
     117                if ( $meta_fields ) {
     118                    $meta_fields = array_merge( $meta_fields, self::$term_meta_fields );
     119                } else {
     120                    $meta_fields = self::$term_meta_fields;
     121                }
     122            }
     123           
     124            return $meta_fields;
    101125        }
    102126
     
    198222             * Rank Math SEO.
    199223             * https://wordpress.org/plugins/seo-by-rank-math/
    200              * @since 2.4.3
    201              */
    202             if ( defined( 'RANK_MATH_VERSION' ) ) {
    203                 self::$vendors[] = 'rank-math-seo.json';
    204             }
     224             * @since 2.4.3
     225             * obsolete @since 2.8.9 Info from self::$add_on['rank_math_seo'] @see `wpglobus\includes\builders\class-wpglobus-builders.php` is enough.
     226             */
     227            // if ( defined( 'RANK_MATH_VERSION' ) ) {
     228                // self::$vendors[] = 'rank-math-seo.json';
     229            // }
    205230
    206231            /**
     
    217242
    218243                $addons = WPGlobus_Builders::get_addons();
    219 
    220244                if ( ! empty( $addons ) ) {
    221                     foreach ( $addons as $id => $addon ) {
     245                    foreach ( $addons as $key => $addon ) {
     246
     247                        /**
     248                         * @since 2.8.9
     249                         */     
     250                        if ( empty( $addon['config_file'] ) ) {
     251                            continue;
     252                        }
     253                       
    222254                        if ( 'add-on' === $addon['role'] ) {
    223255                            if ( ! empty( $addon['const'] ) && defined( $addon['const'] ) ) {
    224                                 self::$vendors[] = $addon['config_file'];
     256                                self::$vendors[$key] = $addon['config_file'];
    225257                            }
     258                        } elseif ( 'builder' === $addon['role'] ) {
     259                            if ( ! empty( $addon['const'] ) && defined( $addon['const'] ) ) {
     260                                self::$vendors[$key] = $addon['config_file'];
     261                            }                           
    226262                        }
    227263                    }
     
    232268             * Now handle with config files.
    233269             */
    234             foreach ( self::$vendors as $file ) {
    235 
     270            foreach ( self::$vendors as $id=>$file ) {
    236271                if ( is_readable( $config_plugin_dir . $file ) ) {
    237                     $file_name = pathinfo( $file, PATHINFO_FILENAME );
    238 
    239                     self::$config[ $file_name ] = json_decode( file_get_contents( $config_plugin_dir . $file ), true );
     272                    self::$config[ $id ] = json_decode( file_get_contents( $config_plugin_dir . $file ), true );
     273                    /**
     274                     * @todo Add warning if file is incorrect. @since 2.8.9
     275                     */
    240276                }
    241277            }
     
    252288             */
    253289            self::$config = apply_filters( 'wpglobus_config_vendors', self::$config, self::$builder );
    254 
     290        }
     291
     292        /**
     293         * Get term meta fields.
     294         *
     295         * @since 2.8.9
     296         */
     297        protected static function get_term_meta_fields() {
     298
     299            /**
     300             * Parse term meta fields.
     301             */         
     302            self::$term_meta_fields = array();
     303            self::$term_ml_fields   = array();
     304
     305            foreach ( self::$config as $vendor_key => $data ) {
     306
     307                if ( isset( $data['term_meta_fields'] ) && is_array( $data['term_meta_fields'] ) ) :
     308
     309                    foreach ( $data['term_meta_fields'] as $_meta => $_init ) {
     310
     311                        if ( isset( $data['term_meta_fields'][ $_meta ] ) ) {
     312
     313                            if ( '*' === $_meta ) {
     314                                // @todo Add in future version.
     315                                // $_arr = self::get_term_meta_fields( $_meta, $_init );
     316                                // if ( ! empty( $_arr ) ) {
     317                                    // self::$term_meta_fields = array_merge( self::$term_meta_fields, $_arr );
     318                                // }
     319                            } else {
     320                                self::$term_meta_fields[] = $_meta;
     321                            }
     322                        }
     323                    }
     324
     325                endif;
     326
     327                if ( isset( $data['term_ml_fields'] ) && is_array( $data['term_ml_fields'] ) ) :
     328                    foreach ( $data['term_ml_fields'] as $_meta => $_init ) {
     329                        if ( isset( $data['term_ml_fields'][ $_meta ] ) ) {
     330
     331                            if ( '*' === $_meta ) {
     332                                // @todo Add in future version.
     333                                // $_arr = self::get_term_ml_fields( $_meta, $_init );
     334                                // if ( ! empty( $_arr ) ) {
     335                                    // self::$term_ml_fields = array_merge( self::$term_ml_fields, $_arr );
     336                                // }
     337                            } else {
     338                                self::$term_ml_fields[] = $_meta;
     339                            }
     340                        }
     341                    }
     342                endif;
     343            }
    255344        }
    256345
     
    352441            return $_post_meta_fields;
    353442        }
    354 
     443       
    355444        /**
    356445         * Parse config files.
    357446         */
    358447        public static function parse_config() {
    359 
     448           
     449            /**
     450             * Get term meta fields.
     451             * @since 2.8.9
     452             */
     453            self::get_term_meta_fields();
     454           
    360455            /**
    361456             * Parse post meta fields.
     
    366461                self::$post_ml_fields   = array();
    367462
    368                 foreach ( self::$config as $vendor => $data ) {
     463                /**
     464                 * @since 2.8.9 Changed $vendor to $vendor_key.
     465                 */
     466                foreach ( self::$config as $vendor_key => $data ) {
    369467
    370468                    if ( isset( $data['post_meta_fields'] ) && is_array( $data['post_meta_fields'] ) ) :
     
    376474                                if ( '*' === $_meta ) {
    377475                                    $_arr = self::get_post_meta_fields( $_meta, $_init );
     476                                   
    378477                                    if ( ! empty( $_arr ) ) {
    379478                                        self::$post_meta_fields = array_merge( self::$post_meta_fields, $_arr );
     
    412511            if ( is_null( self::$wp_options ) ) {
    413512
    414                 foreach ( self::$config as $vendor => $data ) {
     513                /**
     514                 * @since 2.8.9 Changed $vendor to $vendor_key.
     515                 */
     516                foreach ( self::$config as $vendor_key => $data ) {
    415517
    416518                    if ( isset( $data['wp_options'] ) && is_array( $data['wp_options'] ) ) :
  • wpglobus/trunk/includes/class-wpglobus-config.php

    r2566681 r2647967  
    936936                    'post_types'         => $builder_post_types,
    937937                    'options'            => array(
    938                                                 'register_post_types' => $this->option_register_post_types,  // @since 2.2.24
    939                                             )
     938                        'register_post_types' => $this->option_register_post_types,  // @since 2.2.24
     939                    )
    940940                )
    941941            );
     942           
     943            /**
     944             * @since 2.8.9 Added support REST API requests.
     945             */
     946            if ( is_admin() || WPGlobus_WP::is_rest_api_request() ) {
    942947       
    943             if ( is_admin() ) {
    944                
    945948                require_once dirname( __FILE__ ) . '/class-wpglobus-config-vendor.php';
    946949                $config_vendor = WPGlobus_Config_Vendor::get_instance( $this->builder );
  • wpglobus/trunk/includes/class-wpglobus-wp.php

    r1854541 r2647967  
    11<?php
    22/**
    3  * WordPress shortcuts
     3 * File: class-wpglobus-wp.php
     4 *
     5 * WordPress shortcuts.
    46 * @package WPGlobus
    57 */
     
    263265    }
    264266
     267    /**
     268     * True if doing REST API request.
     269     *
     270     * @since 2.8.9
     271     *
     272     * @return bool
     273     */
     274    public static function is_rest_api_request() {
     275
     276        if ( self::is_doing_ajax() ) {
     277            return false;
     278        }
     279       
     280        /**
     281         * @see wp-includes\rest-api.php
     282         * @see wp-includes\load.php
     283         */
     284        if ( defined( 'REST_REQUEST' ) || wp_is_json_request() ) {
     285            return true;
     286        }
     287       
     288        return false;
     289    }
     290   
    265291} // class
    266292
  • wpglobus/trunk/includes/class-wpglobus.php

    r2605532 r2647967  
    463463                    require_once dirname( __FILE__ ) . '/builders/gutenberg/class-wpglobus-gutenberg.php';
    464464                    $builder = new WPGlobus_Gutenberg();
     465                    /**
     466                     * Let's load all needed vendors.
     467                     */
    465468                    require_once dirname( __FILE__ ) . '/vendor/wpglobus-vendors.php';
    466469                   
  • wpglobus/trunk/includes/vendor/rank-math-seo/class-wpglobus-vendor-rank_math_seo.php

    r2462299 r2647967  
    44 *
    55 * @since 2.4.3
     6 * @since 2.8.9 Don't check out post_id.
    67 *
    78 * @package WPGlobus\Vendors\RankMathSEO.
     
    7273            }
    7374
    74             $post_id = (int) $post_id;
    75 
    76             if ( $post_id > 0 ) {
     75            // @since 2.8.9 Don't check out post_id.
     76            // $post_id = (int) $post_id;
     77            // if ( $post_id > 0 ) {
     78            // }
    7779               
    78                 self::$post_meta_fields = array(
    79                     'rank_math_title',
    80                     'rank_math_description',
    81                     'rank_math_focus_keyword',
    82                 );
    83             }
     80            self::$post_meta_fields = array(
     81                'rank_math_title',
     82                'rank_math_description',
     83                'rank_math_focus_keyword',
     84                'rank_math_seo_score',
     85            );
    8486
    8587            return self::$post_meta_fields;
  • wpglobus/trunk/includes/vendor/wpglobus-vendors.php

    r2484793 r2647967  
    11<?php
    22/**
     3 * File: wpglobus-vendors.php
     4 *
    35 * @package WPGlobus\Vendors
    46 *
    57 * We start this file to support the plugins/add-ons in builder mode.
    68 * @since 1.9.17
     9 * @see function maybe_run gutenberg builder in wpglobus\includes\class-wpglobus.php
    710 */
    811
  • wpglobus/trunk/includes/vendor/yoast-seo/class-wpglobus-yoastseo140.php

    r2628639 r2647967  
    17641764     * @since 2.4.14
    17651765     * @since 2.4.15 Localize description.
    1766      * @since 2.5.1  Added support of taxonomies.
     1766     * @since 2.5.1 Added support of taxonomies.
    17671767     * @since 2.7.11 Added filter for breadcrumb title.
     1768     * @since 2.8.9 Added filter for taxonomy term name.
    17681769     *
    17691770     * @scope front
     
    18051806                $context->indexable->breadcrumb_title = WPGlobus_Core::extract_text( $context->indexable->breadcrumb_title, WPGlobus::Config()->language );
    18061807            }
     1808
     1809            /**
     1810             * Filter taxonomy term name.
     1811             * @since 2.8.9
     1812             */             
     1813            if ( WPGlobus_Core::has_translations($graph_piece['name']) ) {
     1814                $graph_piece['name'] = WPGlobus_Core::extract_text( $graph_piece['name'], WPGlobus::Config()->language );
     1815            }
    18071816           
    18081817        } else if ( 'home-page' == $context->indexable->object_type ) {
  • wpglobus/trunk/readme.txt

    r2628639 r2647967  
    221221== Changelog ==
    222222
     223= 2.8.9 =
     224
     225* (Vendors) Updated doc.
     226* (Configs) Updated `rank-math-seo.json` file.
     227* (Core/WPGlobus) Updated doc.
     228* (Core/WPGlobus_WP) Added `is_rest_api_request` function.
     229* (Core/Builders) Added: builder attributes.
     230* (Core/Meta) Added: support term meta data.
     231* (Core/Config) Added: support REST API requests.
     232* (Builder/Config) Set builder language for REST API requests.
     233* (Vendor/Config) Added: handling term meta fields.
     234* (Vendor/Yoast) Filter taxonomy term name in the `Schema Generator`.
     235* (Vendor/RankMathSEO) Don't check post IDs.
     236* (Builders/RankMathSEO) Added: support multilingual columns on `edit.php` page.
     237* (Builders/RankMathSEO) Added: support for the REST API requests.
     238
     239= 2.8.8 =
     240* Version 2.8.7 was a broken build. Fixed.
     241
    223242= 2.8.7 =
    224243* (Vendor/Yoast) Fixed: posts having the `Canonical` meta field set were missing in the `sitemap.xml`.
  • wpglobus/trunk/wpglobus.php

    r2632740 r2647967  
    1616 * Text Domain: wpglobus
    1717 * Domain Path: /languages/
    18  * Version: 2.8.8
     18 * Version: 2.8.9
    1919 * Author: WPGlobus
    2020 * Author URI: https://wpglobus.com/
     
    4545}
    4646
    47 define( 'WPGLOBUS_VERSION', '2.8.8' );
     47define( 'WPGLOBUS_VERSION', '2.8.9' );
    4848define( 'WPGLOBUS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
    4949define( 'WPGLOBUS_AJAX', 'wpglobus-ajax' );
Note: See TracChangeset for help on using the changeset viewer.