// 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 } POISON IVY: Columbia Proves it Was Lying All Along About Fighting Jew-hate [OP-ED]
Opinion

POISON IVY: Columbia Proves it Was Lying All Along About Fighting Jew-hate [OP-ED]

posted by Hannity Staff - 3.26.25

By The New York Post Editorial Board

Columbia University is lying big-time, and lying clumsily at that.

The school’s interim president, Katrina Armstrong, privately told faculty that Columbia has not, in fact, banned masks — even after it promised the White House (to prevent more nixed federal funding beyond the $400 million already stopped) that it would ban them.

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

Yet Armstrong turned around Tuesday to insist Columbia’s promises to ban masks and make other changes are “real.”

“Any suggestion that these measures are illusory,” she huffed, “is unequivocally false.”

Gee, they look pretty “illusory” so far: Dozens of masked protesters freely flooded the campus Monday; on Tuesday, students wore keffiyehs and masks to class, thumbing their (covered-up) noses at efforts to fight antisemitism.

(Yep: By wearing masks, they unmasked Armstrong’s lies.)

Armstrong’s trying to have it both ways on multiple issues: Talking to the faculty, she downplayed the school’s other promises to Team Trump.

Notably, Columbia told the White House it will name a senior vice provost to oversee its radical Middle East studies department to “ensure the educational offerings are comprehensive and balanced.”

Yet she and her minions then reassured faculty the move won’t impact how the department operates, the Wall Street Journal reported — which means it won’t address the department’s infamous anti-Israel slant.

Do they think it’s that easy to pull the wool over Team Trump’s eyes?

Columbia is clearly trying to defraud the feds to keep the money flowing in.

Armstrong’s approach: Deny the truth and hire a PR firm to confuse the issues.

At this point, the Trumpies will be fully within their rights to cut off all federal funds, if they see fit.

Washington didn’t stand for racism at schools in the ’60s; it shouldn’t pay the tab for their antisemitism today.

And don’t buy the BS about academic freedom and free speech.

Harassment, intimidation and violence against Jews isn’t free speech. Nor is setting up a restricted, pro-terror, antisemitic encampment. Nor taking over a building, damaging property and scuffling with employees.

As for the Middle East studies department, government has no obligation to fund divisive, untrue smears about Israel, America, Jews, whites or the West.

The school is free to teach that garbage — on its own dime.

Look, Columbia would never tolerate mask-wearing Ku Klux Klan hooligans harassing blacks. Nor would it hire racists to teach, say, African American studies classes.

It simply makes an exception when it comes to Jew-haters.

More than a year after Columbia became the poster campus for antisemitism, it remains utterly unreformed.

If it won’t fix itself voluntarily, it has no right to expect taxpayer dollars.

Thank you for visiting Hannity.com. You are about to leave
Hannity.com and proceed to a site owned and operated by a third party.
Hannity.com has no control over the content of this third-party site.
Click OK to proceed.
OK
X
You may if you would no longer like to receive a newsletter.
You have been successfully unsubscribed!
Please see our Terms of Use and Privacy Notice .
If you have any questions or concerns please contact us.
$( document ).ready(function() { show_tout_banner=0; function bannerswap(){ //console.log('checkbanners'); show_tout_banner++; if($('.mobile-tout >div ').length >1){ $('.mobile-tout').addClass('t-hide'); } if(show_tout_banner > $('.mobile-tout >div').length -1){ $('.mobile-tout:eq(0)').removeClass('t-hide'); show_tout_banner=0; } else{ $('.mobile-tout:eq('+show_tout_banner+')').removeClass('t-hide'); } //console.log('show banner '+show_tout_banner); } if($('.mobile-tout >div ').length){ bannerswap(); show_tout_banner_rotator = setInterval(bannerswap, 5000); //console.log($('.mobile-tout').length); } });