/**
* TW-Translate SEO Manager
* Handles SEO keys application and meta tag management
*/
class TW_SEO_Manager {
// SEO Keys functionality removed - not needed for core translation functionality
/**
* Store translation via REST API
*/
public static function store_translation(WP_REST_Request $request) {
if (!get_option('tw_translate_seo_enabled', false)) {
return rest_ensure_response(['success' => false, 'message' => 'SEO caching is disabled']);
}
$domain = $request->get_param('domain');
$url_path = $request->get_param('url_path');
$content = $request->get_param('content');
$lang = $request->get_param('lang');
if (empty($domain) || empty($url_path) || empty($content) || empty($lang)) {
return new WP_Error('invalid_params', 'Missing required parameters', ['status' => 400]);
}
if ($url_path === '' || $url_path[0] !== '/') {
$url_path = '/' . ltrim($url_path, '/');
}
tw_log("Storing translation cache for {$domain}{$url_path} (lang: {$lang})", 'info');
// Process content to ensure all domains are correctly set
$content = TW_Text_Cleaner::process_domains_in_content($content, $domain);
// Extract meta data for SEO analysis
$meta_data = TW_Meta_Extractor::extract_meta_data($content);
// SEO Keys functionality removed
// Ensure content is UTF-8 encoded
if (!mb_check_encoding($content, 'UTF-8')) {
$content = mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content));
}
// Store in database
$cache_duration_hours = absint(get_option('tw_translate_cache_duration', 24));
if ($cache_duration_hours <= 0) {
$cache_duration_hours = 24;
}
$result = tw_save_page_cache($domain, $url_path, $lang, $content, $meta_data, $cache_duration_hours);
if ($result) {
tw_log("Translation cache stored successfully", 'info');
return rest_ensure_response(['success' => true]);
} else {
tw_log("Failed to store translation cache", 'error');
return new WP_Error('storage_failed', 'Failed to store cache', ['status' => 500]);
}
}
/**
* Check if request is from search engine
*/
public static function is_search_engine() {
if (!isset($_SERVER['HTTP_USER_AGENT'])) {
return false;
}
$user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
$search_engines = [
'googlebot',
'bingbot',
'slurp',
'duckduckbot',
'baiduspider',
'yandexbot',
'facebookexternalhit',
'twitterbot',
'rogerbot',
'linkedinbot',
'embedly',
'quora link preview',
'showyoubot',
'outbrain',
'pinterest',
'developers.google.com/+/web/snippet'
];
foreach ($search_engines as $bot) {
if (strpos($user_agent, $bot) !== false) {
return true;
}
}
return false;
}
}
/**
* Legacy function wrappers for backward compatibility
*/
// SEO Keys function removed - functionality deprecated
function tw_translate_store_translation(WP_REST_Request $request) {
return TW_SEO_Manager::store_translation($request);
}
function tw_is_search_engine() {
return TW_SEO_Manager::is_search_engine();
}
Веселый алфавит (Funny alphabet) - IgraZa. Игры, ребусы, загадки, викторины, кроссворды, головоломки, задачи
⚠️ Сайт носит информационный характер, не содержит ссылки на онлайн-казино и не проводит игр на деньги
Дехтяренко Светлана Николаевна
учитель английского языка
Коммунальное государственное учреждение «Средняя школа №44»
Республика Казахстан, г.Петропавловск
Материал представляет собой игру. На цветной картинке изображены буквы алфавита, которые надо отыскать, это легко и интересно!
{module Google_kvadrat}
Полноразмерный файл с игрой и ответы, объемом 836 Кб можно
Reactions Already reacted for this post.