| @@ -641,9 +641,9 @@ | ||
| 641 | 641 | // Call translation API |
| 642 | 642 | $api_url = 'https://api.wordpress-ai-builder.com/api' . '/ai-transform-page/translate-post'; |
| 643 | 643 | |
| 644 | 644 | $response = wp_remote_post($api_url, array( |
| 645 | - 'timeout' => 60, | |
| 645 | + 'timeout' => 180, // 5 minutes - AI translation can take longer for large pages | |
| 646 | 646 | 'headers' => array( |
| 647 | 647 | 'Authorization' => 'Bearer ' . $jwt_token, |
| 648 | 648 | 'Content-Type' => 'application/json', |
| 649 | 649 | ), |
| @@ -722,12 +722,14 @@ | ||
| 722 | 722 | if (is_wp_error($new_post_id)) { |
| 723 | 723 | wp_send_json_error(array('message' => 'Failed to create translated post: ' . $new_post_id->get_error_message())); |
| 724 | 724 | } |
| 725 | 725 | |
| 726 | - // Save meta description (both keys) | |
| 726 | + // Save meta description across all supported meta keys | |
| 727 | 727 | if (!empty($translated_data['meta_desc'])) { |
| 728 | 728 | update_post_meta($new_post_id, '_ai_builder_seo_desc', $translated_data['meta_desc']); |
| 729 | 729 | update_post_meta($new_post_id, '_yoast_wpseo_metadesc', $translated_data['meta_desc']); |
| 730 | + update_post_meta($new_post_id, 'aibui_meta_description', $translated_data['meta_desc']); | |
| 731 | + update_post_meta($new_post_id, '_ai_translation_meta_desc', $translated_data['meta_desc']); | |
| 730 | 732 | } |
| 731 | 733 | |
| 732 | 734 | // Copy custom CSS meta if present |
| 733 | 735 | $css_meta_keys = array( |
| @@ -742,8 +744,22 @@ | ||
| 742 | 744 | update_post_meta($new_post_id, $css_key, $css_value); |
| 743 | 745 | } |
| 744 | 746 | } |
| 745 | 747 | |
| 748 | + // Copy custom JS meta if present (so translated pages keep JS behavior) | |
| 749 | + $js_meta_keys = array( | |
| 750 | + 'ai_builder_page_js_content', | |
| 751 | + 'ai_builder_block_js_content', | |
| 752 | + 'ai_builder_js_content' | |
| 753 | + ); | |
| 754 | + | |
| 755 | + foreach ($js_meta_keys as $js_key) { | |
| 756 | + $js_value = get_post_meta($post_id, $js_key, true); | |
| 757 | + if (!empty($js_value)) { | |
| 758 | + update_post_meta($new_post_id, $js_key, $js_value); | |
| 759 | + } | |
| 760 | + } | |
| 761 | + | |
| 746 | 762 | // Save language meta |
| 747 | 763 | update_post_meta($new_post_id, '_ai_lang', $target_lang); |
| 748 | 764 | update_post_meta($new_post_id, '_ai_translation_source', $post_id); |
| 749 | 765 | if (!get_post_meta($post_id, '_ai_translation_source', true)) { |
| @@ -782,8 +798,19 @@ | ||
| 782 | 798 | |
| 783 | 799 | // Preserve AI-created flag to keep hide-title CSS behavior |
| 784 | 800 | if (get_post_meta($post_id, '_aibui_created_by_ai', true) === '1') { |
| 785 | 801 | update_post_meta($new_post_id, '_aibui_created_by_ai', '1'); |
| 802 | + } | |
| 803 | + | |
| 804 | + // If the original page is the front page, mark the translation as homepage for its language | |
| 805 | + $front_page_id = get_option('page_on_front'); | |
| 806 | + if ($front_page_id && (int) $front_page_id === (int) $post_id) { | |
| 807 | + update_post_meta($new_post_id, '_ai_is_homepage', '1'); | |
| 808 | + } | |
| 809 | + | |
| 810 | + // Also copy the homepage flag if it exists on the original | |
| 811 | + if (get_post_meta($post_id, '_ai_is_homepage', true) === '1') { | |
| 812 | + update_post_meta($new_post_id, '_ai_is_homepage', '1'); | |
| 786 | 813 | } |
| 787 | 814 | |
| 788 | 815 | // Copy featured image if exists |
| 789 | 816 | $thumbnail_id = get_post_thumbnail_id($post_id); |