Plugin Directory

Changeset 3355224


Ignore:
Timestamp:
09/03/2025 09:43:14 AM (7 months ago)
Author:
ovesio
Message:
  • Added Yoast support
  • Post tags are now translated
Location:
ovesio/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • ovesio/trunk

    • Property svn:ignore set to
      .vscode
  • ovesio/trunk/admin/buttons.php

    r3340237 r3355224  
    181181                    ],
    182182                ];
     183
     184                //Get tags
     185                if(in_array($type, ['post', 'product'])) {
     186                    $tags = get_the_terms($id, $type . '_tag');
     187                    if (!empty($tags) && !is_wp_error($tags)) {
     188                        foreach ($tags as $tag) {
     189                            $request[] = [
     190                                'key' => 't:' . $tag->term_id,
     191                                'value' => $tag->name
     192                            ];
     193                        }
     194                    }
     195                }
    183196
    184197                // Elementor compatibility
     
    212225                }
    213226
     227                //Yoast compatibility
     228                $all_meta = get_post_meta($id);
     229                $yoast_meta = array_filter($all_meta, function($key) {
     230                    return in_array($key, ['_yoast_wpseo_focuskw', '_yoast_wpseo_metadesc']);
     231                }, ARRAY_FILTER_USE_KEY);
     232
     233                foreach($yoast_meta as $meta_key => $meta_value) {
     234                    $request[] = [
     235                        'key' => 'y:' . $meta_key,
     236                        'value' => isset($meta_value[0]) ? $meta_value[0] : $meta_value
     237                    ];
     238                }
     239
    214240                break;
    215241            case 'post_tag':
  • ovesio/trunk/callback.php

    r3340237 r3355224  
    9090
    9191        $post['post_status'] = $post_status;
    92         $elementor = [];
     92        $yoast = $elementor = $tags = [];
    9393        foreach($callback->content as $content) {
    94             if(substr($content->key, 0, 2) == 'e:') {
     94            if(substr($content->key, 0, 2) == 't:') { //tags
     95                $content->key = substr($content->key, 2, strlen($content->key));
     96                $tags[$content->key] = $content->value;
     97            } elseif(substr($content->key, 0, 2) == 'e:') { //elementor
    9598                $content->key = substr($content->key, 2, strlen($content->key));
    9699                $elementor[] = (array) $content;
     100            } elseif(substr($content->key, 0, 2) == 'y:') { //yoast
     101                $content->key = substr($content->key, 2, strlen($content->key));
     102                $yoast[$content->key] = $content->value;
    97103            } else {
    98104                $post[$content->key] = $content->value;
     
    103109        //     $new_post_id = wp_update_post($post);
    104110        // } else {
     111        $post['post_name'] = sanitize_title($post['post_title']);
     112
    105113        $new_post_id = wp_insert_post($post);
    106114        // }
     115
     116        //Update tags if exists
     117        if(!empty($tags) && in_array($type, ['post', 'product'])) {
     118            $tag_type = $type . '_tag';
     119
     120            $new_tags = [];
     121            foreach($tags as $tag_id => $tag_value) {
     122                $term = (array) get_term($tag_id, $tag_type);
     123                if (is_wp_error($term) || !$term) {
     124                    continue;
     125                }
     126                unset($term['name']);
     127                unset($term['description']);
     128
     129                $tag_translation = pll_get_term_translations($tag_id);
     130
     131                $name = esc_html(wp_unslash($tag_value));
     132
     133                // Create the translated term
     134                $parent_cat = ovesio_parent_category_relations($tag_id, $target_lang);
     135
     136                // Check if the Term exists in the target language To append new lang sulg
     137                $term_exists = term_exists($name, $tag_type, $parent_cat);
     138                // If the term already exists, append the language slug to the title
     139                // if(!empty($term_exists)) {
     140                //     $existing_term = get_term($term_exists['term_id'], $tag_type);
     141                //     $term['slug'] = $existing_term->slug;
     142                // } else {
     143                    $term['slug'] = sanitize_title($name);
     144                // }
     145
     146                //Check if it's an update
     147                if (!isset($tag_translation[$target_lang])) {
     148                    $new_term = wp_insert_term($name, $tag_type, $term);
     149
     150                    $new_term_id = (is_array($new_term) && !empty($new_term['term_id'])) ? $new_term['term_id'] : $new_term->term_id;
     151                    if (is_wp_error($new_term)) {
     152                        if(!empty($new_term->error_data['term_exists'])) {
     153                            $new_term_id = $new_term->error_data['term_exists'];
     154                        } else {
     155                            continue;
     156                        }
     157                    }
     158
     159                    // Set language
     160                    if (function_exists('pll_set_term_language')) {
     161                        pll_set_term_language($new_term_id, $target_lang);
     162                    }
     163
     164                    // Get existing translations
     165                    if (function_exists('pll_get_term_translations') && function_exists('pll_save_term_translations')) {
     166                        if (!isset($tag_translation[$target_lang])) {
     167                            // Add the new translation
     168                            $tag_translation[$target_lang] = $new_term_id;
     169                            // Save the updated translations
     170                            pll_save_term_translations($tag_translation);
     171                        }
     172                    }
     173
     174                    $new_tags[] = $name;
     175                }
     176            }
     177
     178            //Add tags to post
     179            if($new_tags) {
     180                wp_set_post_tags($new_post_id, $new_tags, true);
     181            }
     182        }
    107183
    108184        // Check if the post was created successfully
     
    127203            //     update_post_meta($new_post_id, '_elementor_page_settings', $post['_elementor_page_settings']);
    128204            // }
     205        }
     206
     207        if($yoast) {
     208            foreach($yoast as $y_key => $y_value)
     209            {
     210                update_post_meta($new_post_id, $y_key, $y_value);
     211            }
    129212        }
    130213
     
    210293        $name = $term['name'];
    211294        unset($term['name']);
     295        unset($term['description']);
    212296
    213297        // Create the translated term
     
    232316        }
    233317
     318        $new_term_id = (is_array($new_term) && !empty($new_term['term_id'])) ? $new_term['term_id'] : $new_term->term_id;
     319
    234320        if (is_wp_error($new_term)) {
    235             wp_send_json_error('Term creation failed: ' . $new_term->get_error_message(), 500);
    236         }
    237 
    238         if (!isset($new_term['term_id'])) {
     321            if(!empty($new_term->error_data['term_exists'])) {
     322                $new_term_id = $new_term->error_data['term_exists'];
     323            } else {
     324                wp_send_json_error('Term creation failed: ' . $new_term->get_error_message(), 500);
     325            }
     326        }
     327
     328        if (empty($new_term_id)) {
    239329            wp_send_json_error('Term ID not returned', 500);
    240330        }
    241331
    242         $new_post_id = $new_term['term_id'];
     332        $new_post_id = $new_term_id;
    243333
    244334        // Set language
    245335        if (function_exists('pll_set_term_language')) {
    246             pll_set_term_language($new_term['term_id'], $target_lang);
     336            pll_set_term_language($new_term_id, $target_lang);
    247337        }
    248338
     
    251341            if (!isset($translations[$target_lang])) {
    252342                // Add the new translation
    253                 $translations[$target_lang] = $new_term['term_id'];
     343                $translations[$target_lang] = $new_term_id;
    254344                // Save the updated translations
    255345                pll_save_term_translations($translations);
  • ovesio/trunk/composer.json

    r3347392 r3355224  
    22    "name": "ovesio/ovesio-wordpress",
    33    "description": "WordPress plugin that integrates Ovesio AI Translation and SEO tools.",
    4     "version": "1.3.4",
     4    "version": "1.3.5",
    55    "type": "wordpress-plugin",
    66    "require": {
  • ovesio/trunk/ovesio.php

    r3347401 r3355224  
    44 * Plugin Name: Ovesio
    55 * Description: Get instant translations & contentn generator in over 27 languages, powered by the most advanced artificial intelligence technologies.
    6  * Version: 1.3.4
     6 * Version: 1.3.5
    77 * Author: Ovesio
    88 * Text Domain: ovesio
     
    1818}
    1919
    20 define('OVESIO_PLUGIN_VERSION', '1.3.4');
     20define('OVESIO_PLUGIN_VERSION', '1.3.5');
    2121define('OVESIO_PLUGIN_DIR', plugin_dir_path(__FILE__));
    2222define('OVESIO_ADMIN_DIR', OVESIO_PLUGIN_DIR . 'admin/');
  • ovesio/trunk/readme.txt

    r3347392 r3355224  
    44Requires PHP: 7.2
    55License: GPLv2 or later
    6 Stable tag: 1.3.4
     6Stable tag: 1.3.5
    77Contributors: ovesio, awebro
    88Tags: multilingual, translate, translation, language, localization
     
    125125
    126126== Changelog ==
     127= 1.3.5 =
     128Added Yoast support
     129Post tags are now translated
     130
    127131= 1.3.4 =
    128132Readme file updated
Note: See TracChangeset for help on using the changeset viewer.