__( 'Insufficient permissions.', 'ai-eshop-optimizer' ) ) ); } } public function ajax_refresh() { $this->guard(); $res = AIEO_DFS_Backlinks::refresh( 300 ); if ( is_wp_error( $res ) ) { wp_send_json_error( array( 'message' => $res->get_error_message() ) ); } wp_send_json_success( array( 'message' => sprintf( __( 'Fetched %d referring domains.', 'ai-eshop-optimizer' ), (int) $res['stored'] ), ) ); } public function ajax_disavow_action() { $this->guard(); $op = isset( $_POST['op'] ) ? sanitize_key( wp_unslash( $_POST['op'] ) ) : ''; $domain = isset( $_POST['domain'] ) ? sanitize_text_field( wp_unslash( $_POST['domain'] ) ) : ''; if ( 'add' === $op && '' !== $domain ) { AIEO_DFS_Backlinks::disavow_add( $domain, __( 'Flagged in Backlinks', 'ai-eshop-optimizer' ) ); wp_send_json_success( array( 'disavowed' => true ) ); } if ( 'remove' === $op && '' !== $domain ) { AIEO_DFS_Backlinks::disavow_remove( $domain ); wp_send_json_success( array( 'disavowed' => false ) ); } if ( 'disavow_all_toxic' === $op ) { $n = AIEO_DFS_Backlinks::disavow_all_toxic(); wp_send_json_success( array( 'message' => sprintf( __( 'Added %d toxic domains to the disavow list.', 'ai-eshop-optimizer' ), (int) $n ), ) ); } wp_send_json_error( array( 'message' => __( 'Invalid action.', 'ai-eshop-optimizer' ) ) ); } public function download_disavow() { if ( ! current_user_can( 'manage_woocommerce' ) && ! current_user_can( 'manage_options' ) ) { wp_die( esc_html__( 'Insufficient permissions.', 'ai-eshop-optimizer' ) ); } $nonce = isset( $_GET['nonce'] ) ? sanitize_text_field( wp_unslash( $_GET['nonce'] ) ) : ''; if ( ! wp_verify_nonce( $nonce, AIEO_DMM::NONCE_ACTION ) ) { wp_die( esc_html__( 'Security check failed.', 'ai-eshop-optimizer' ) ); } $host = preg_replace( '/[^a-z0-9.-]/', '_', (string) AIEO_DFS_Backlinks::target() ); nocache_headers(); header( 'Content-Type: text/plain; charset=utf-8' ); header( 'Content-Disposition: attachment; filename="disavow-' . $host . '.txt"' ); echo AIEO_DFS_Backlinks::disavow_file(); exit; } public function render_subtab() { AIEO_DFS_Backlinks::ensure_tables(); $this->render_template( 'seo/backlinks.php', array( 'available' => AIEO_DFS_Backlinks::available(), 'summary' => AIEO_DFS_Backlinks::cached_summary(), 'domains' => AIEO_DFS_Backlinks::referring_domains( 200 ), 'threshold' => AIEO_DFS_Backlinks::toxic_threshold(), 'disavow_n' => AIEO_DFS_Backlinks::disavow_count(), 'last' => get_option( AIEO_DFS_Backlinks::LAST_OPT, '' ), 'tool_url' => AIEO_DFS_Backlinks::disavow_tool_url(), 'download' => wp_nonce_url( admin_url( 'admin-post.php?action=aieo_seo_disavow_download' ), AIEO_DMM::NONCE_ACTION, 'nonce' ), 'nonce' => wp_create_nonce( AIEO_DMM::NONCE_ACTION ), 'ajax' => admin_url( 'admin-ajax.php' ), ) ); } }