// SEO: Disable user sitemap (exposes editor usernames to scrapers) add_filter('wp_sitemaps_add_provider', function($provider, $name) { if ($name === 'users') return false; return $provider; }, 10, 2); // SEO: Remove post_tag archives from XML sitemap (thin/low-value pages) add_filter('wp_sitemaps_taxonomies', function($taxonomies) { unset($taxonomies['post_tag']); return $taxonomies; }); // SEO: Auto-generate SEO title on publish via Gemini API (2026-03-25) add_action('transition_post_status', 'hannity_auto_seo_title', 10, 3); function hannity_auto_seo_title($new_status, $old_status, $post) { // Only fire when transitioning TO publish for the first time if ($new_status !== 'publish' || $post->post_type !== 'post') return; if ($old_status === 'publish') return; // skip re-saves of already-published posts // Skip if seo_title already set if (get_post_meta($post->ID, 'seo_title', true)) return; $title = $post->post_title; if (empty($title)) return; $prompt = 'Convert this news headline to a clean SEO title tag (50-65 chars max). ' . 'Remove ALL CAPS prefixes like BREAKING: BUSTED: WATCH: BOMBSHELL: etc. ' . 'Remove [WATCH] [VIDEO] suffixes. Factual, keyword-rich, no spin. ' . 'Return ONLY the SEO title as a plain string, no quotes, no explanation.' . "\n\nHeadline: " . $title; $api_key = 'AIzaSyB-D7nxEi4UzLdoKIZBAY_ydYS5JT8EBCU'; $url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=' . $api_key; $response = wp_remote_post($url, array( 'headers' => array('Content-Type' => 'application/json'), 'body' => json_encode(array( 'contents' => array(array('parts' => array(array('text' => $prompt)))), 'generationConfig' => array('temperature' => 0.2, 'maxOutputTokens' => 100), )), 'timeout' => 10, )); if (is_wp_error($response)) return; $data = json_decode(wp_remote_retrieve_body($response), true); $seo_title = trim($data['candidates'][0]['content']['parts'][0]['text'] ?? ''); if (empty($seo_title)) return; $seo_title = trim($seo_title, '"\''); // strip any surrounding quotes Gemini adds update_post_meta($post->ID, 'seo_title', $seo_title); update_post_meta($post->ID, '_seo_title', 'field_56425125fb2ed'); // ACF field key ref }
Midterms

WATCH: Dem Gov. Candidate in Oregon Can't Ditch Defund Past, Gets Blasted By Opponents

posted by Hannity Staff - 10.20.22

“Defund the Police” has been an incredible failure —and Democrats don’t want to own it.

During the Oregon gubernatorial debate Wednesday night, Democratic candidate Tina Kotek was asked about the need to fund law enforcement to combat the rise in violent crime; Kotek answered while skirting her history with “defund.”

“When people call 911, they need to feel safe and have the right response at the right time. I’ve always supported our state police,” Kotek said. “And we do need more officers. And one of the things the state can do is increase the number of classes and trainings that are available,” she added. “It’s important to have state police around the state to particularly serve our rural communities.”

Breaking Alerts
Don't miss the stories that matter.
Get Sean's breaking news alerts — free, direct to your inbox.
Sign Up

Kotek’s opponents Republican Christine Drazan and independent Betsy Johnson pounced immediately.

“Tina Kotek is the original defund the police candidate,” Drazan said during her time to respond. “She did not support the police even when rioters were attacking a police station. It’s stunning to me that she would talk now like she supports law enforcement.”

“As governor, I will fully fund state police,” Drazan continued. “As governor, I will support law enforcement because we need it in our communities. Our communities are less safe today because we have less police on our streets.”

Johnson backed Drazan’s summary of Kotek and further explained, “We’ve gotta start by respecting our police. That doesn’t mean walking with the rioters or excoriating the police when the riots were happening.”

Watch the clip above.