06 May 2026

How to create video slider with cuncks of videos without download all videos?

 Create video slider with cuncks of videos without download all videos



function custom_video_slider_shortcode() {

$slider_id = 'video-slider-' . wp_unique_id();

ob_start();
?>

<style>
.video-slider-wrapper {
position: relative;
padding: 0 50px;
overflow: hidden;
}

.custom-video-slider.owl-carousel {
display: block;
}

.custom-video-slider .item {
height: auto;
}

.custom-video-slider .story-video {
position: relative;
cursor: pointer;
overflow: hidden;
border-radius: 12px;
}

.custom-video-slider img,
.custom-video-slider video {
width: 100%;
height: 517px !important;
object-fit: cover;
display: block;
border-radius: 12px;
}

/* Play Button */
.play-btn {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 65px;
height: 65px;
background: rgb(255 255 255 / 60%);
border-radius: 50%;
z-index: 5;
}

.play-btn:before {
content: '';
position: absolute;
left: 25px;
top: 20px;
border-left: 20px solid #082267;
border-top: 12px solid transparent;
border-bottom: 12px solid transparent;
}

/* Owl Arrows */
.video-slider-wrapper .owl-nav {
margin: 0;
}

.video-slider-wrapper .owl-nav button.owl-prev,
.video-slider-wrapper .owl-nav button.owl-next {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 45px !important;
height: 45px !important;
background: #f4f4f4 !important;
border-radius: 50% !important;
z-index: 20;
display: flex !important;
align-items: center;
justify-content: center;
margin: 0 !important;
padding: 0 !important;
border: none !important;
outline: none !important;
}

.video-slider-wrapper .owl-nav button.owl-prev {
left: 0;
}

.video-slider-wrapper .owl-nav button.owl-next {
right: 0;
}

.video-slider-wrapper .owl-nav button span {
font-size: 32px;
line-height: 1;
font-weight: 700;
color: #082363;
position: relative;
top: -2px;
}

.video-slider-wrapper .owl-nav button.disabled {
opacity: 0.4;
cursor: not-allowed;
}

.video-slider-wrapper .owl-dots {
display: none;
}

@media(max-width:768px){
.video-slider-wrapper {
padding: 0 30px;
}

.custom-video-slider img,
.custom-video-slider video {
/*height: 220px !important;*/
}
}
</style>

<div class="video-slider-wrapper" id="<?php echo esc_attr($slider_id); ?>">

<div class="custom-video-slider owl-carousel owl-theme">

<?php
$video_base = trailingslashit(get_stylesheet_directory_uri()) . 'assets/videos/review-videos';
$videos = [
[
'm3u8' => $video_base . '/video1/uAF7Vj.m3u8',
'thumb' => '/wp-content/uploads/2026/05/Moving-Artwork.webp'
],
[
'm3u8' => $video_base . '/video2/qIFnyy.m3u8',
'thumb' => '/wp-content/uploads/2026/05/Review-2.webp'
],
[
'm3u8' => $video_base . '/video3/RNF7vy.m3u8',
'thumb' => '/wp-content/uploads/2026/05/bed.webp'
],
[
'm3u8' => $video_base . '/video4/ja6BNj.m3u8',
'thumb' => '/wp-content/uploads/2026/05/piano.webp'
],
[
'm3u8' => $video_base . '/video5/faymEv.m3u8',
'thumb' => '/wp-content/uploads/2026/05/Review.webp'
]
];

foreach ($videos as $video) :
?>

<div class="item">
<div class="story-video"
data-src="<?php echo esc_url($video['m3u8']); ?>"
data-thumb="<?php echo esc_url($video['thumb']); ?>">

<img src="<?php echo esc_url($video['thumb']); ?>" alt="Video Thumbnail">
<div class="play-btn"></div>

</div>
</div>

<?php endforeach; ?>

</div>

</div>

<!-- HLS Script -->
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>

<script>
jQuery(document).ready(function($) {

const wrapper = $("#<?php echo esc_js($slider_id); ?>");
const slider = wrapper.find(".custom-video-slider");

function stopVideo(el) {
const video = el.querySelector("video");

if (video) {
if (video.hls) {
video.hls.destroy();
}

video.pause();
video.removeAttribute("src");
video.load();
}

const thumb = el.getAttribute("data-thumb");

el.innerHTML = `
<img src="${thumb}" alt="Video Thumbnail">
<div class="play-btn"></div>
`;

el.classList.remove("loaded");
}

slider.owlCarousel({
items: 3,
margin: 25,
loop: true,
nav: true,
dots: false,
autoplay: false,
smartSpeed: 500,
navText: [
"<span>&lsaquo;</span>",
"<span>&rsaquo;</span>"
],
responsive: {
0: {
items: 1,
margin: 15
},
576: {
items: 1,
margin: 15
},
768: {
items: 2,
margin: 20
},
992: {
items: 2,
margin: 20
},
1200: {
items: 3,
margin: 25
},
1400: {
items: 3,
margin: 30
}
}
});

wrapper.on("click", ".story-video", function() {

const el = this;

if (el.classList.contains("loaded")) {
stopVideo(el);
return;
}

wrapper.find(".story-video.loaded").each(function() {
stopVideo(this);
});

const video = document.createElement("video");

video.autoplay = true;
video.controls = true;
video.playsInline = true;
video.preload = "none";

const src = el.getAttribute("data-src");

if (typeof Hls !== "undefined" && Hls.isSupported()) {
const hls = new Hls();
hls.loadSource(src);
hls.attachMedia(video);
video.hls = hls;
} else if (video.canPlayType("application/vnd.apple.mpegurl")) {
video.src = src;
}

el.innerHTML = "";
el.appendChild(video);
el.classList.add("loaded");
});

slider.on("changed.owl.carousel translated.owl.carousel dragged.owl.carousel", function() {
wrapper.find(".story-video.loaded").each(function() {
stopVideo(this);
});
});

});
</script>

<?php
return ob_get_clean();
}

add_shortcode('custom_video_slider', 'custom_video_slider_shortcode');

<?php echo do_shortcode('[custom_video_slider]'); ?>

01 May 2026

How to download/create content in doc from website by adding code in chrome console?

 Download/Create content in doc from website by adding code in chrome console




function exportHTMLtoDoc(elementId, fileName = 'document') {

    // 1. Get the specific div content

    const header = "<html xmlns:o='urn:schemas-microsoft-com:office:office' "+

            "xmlns:w='urn:schemas-microsoft-com:office:word' "+

            "xmlns='http://www.w3.org/TR/REC-html40'>"+

            "<head><meta charset='utf-8'></head><body>";

    const footer = "</body></html>";

    

    const sourceHTML = header + document.getElementById(elementId).innerHTML + footer;

    

    // 2. Create a Blob with MS Word MIME type

    const source = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(sourceHTML);

    

    // 3. Create a temporary download link

    const fileDownload = document.createElement("a");

    document.body.appendChild(fileDownload);

    fileDownload.href = source;

    fileDownload.download = fileName + '.doc';

    fileDownload.click();

    document.body.removeChild(fileDownload);

}



(function(){

  const el = document.querySelector('[data-testid="view-lesson-content"]');

  if(!el){console.log("Element not found"); return;}

  el.id='temp-export';

  exportHTMLtoDoc('temp-export','My_Web_Export');

})();

18 March 2026

How to create youtube videos slider with play and pause option in wordpress?

Create youtube videos slider with play and pause option in wordpress

youtube videos slider


Use this shortcode:-[punjab_today]


function my_youtube_owl_slider($content) {
if (strpos($content, '[youtube_slider]') === false) return $content;

$channel_id = 'UCFSdmqI8stLd4NuOkKTDlMw';
$rss_url = "https://www.youtube.com/feeds/videos.xml?channel_id=" . $channel_id;

$feed = @simplexml_load_file($rss_url);
if (!$feed) return str_replace('[youtube_slider]', '', $content);

ob_start();
?>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css">
<style>
.yt-slider-wrapper { margin: 20px 0; min-height: 250px; }
.yt-owl .item { background: #000; border-radius: 12px; overflow: hidden; height: 230px; position: relative; }
.yt-player-el { width: 100%; height: 100%; display: block; }
.yt-nav { text-align: center; margin-top: 15px; }
.yt-nav button { background: #000000; color: #fff; border: none; padding: 8px 18px; cursor: pointer; border-radius: 0px; font-weight: 600; margin: 0 5px; }
.yt-nav button:hover {
background: #edb500;
}
.latestNewsVideosTitle {
color: #000000;
font-size: 22px !important;
line-height: 1.2 !important;
font-weight: 900 !important;
border-bottom: 2px solid #000;
padding-bottom: 9px;
display: inline-block;
margin: 0px;
margin-bottom: 25px;
}
</style>
<div class="yt-slider-wrapper">
<h3 class="latestNewsVideosTitle">Latest News Videos</h3>
<div class="yt-owl owl-carousel">
<?php
$count = 0;
$unique_prefix = 'yt_' . time(); // Ensures unique IDs even if page is reloaded via AJAX
foreach ($feed->entry as $entry):
if ($count >= 10) break;
$video_id = (string) $entry->children('yt', true)->videoId;
$p_id = $unique_prefix . '_' . $count;
?>
<div class="item">
<div id="<?php echo $p_id; ?>" class="yt-player-el" data-video-id="<?php echo esc_attr($video_id); ?>"></div>
</div>
<?php
$count++;
endforeach;
?>
</div>
<div class="yt-nav">
<button class="yt-prev"></button>
<button class="yt-next"></button>
</div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<script src="https://www.youtube.com/iframe_api"></script>

<script>
(function($){
var players = [];

function initPlayers() {
$('.yt-player-el').each(function() {
var $el = $(this);
if ($el.hasClass('yt-ready')) return; // Don't re-init if already done

var player = new YT.Player(this.id, {
height: '260',
width: '100%',
videoId: $el.data('video-id'),
playerVars: { 'rel': 0, 'enablejsapi': 1 },
events: {
'onStateChange': function(event) {
if (event.data === YT.PlayerState.PLAYING) {
players.forEach(function(p) {
if (p !== event.target && typeof p.pauseVideo === 'function') p.pauseVideo();
});
}
}
}
});
players.push(player);
$el.addClass('yt-ready');
});
initCarousel();
}

function initCarousel() {
var $slider = $('.yt-owl');
if ($slider.hasClass('owl-loaded')) return;

$slider.owlCarousel({
loop: false,
margin: 15,
nav: false,
dots: false,
responsive: { 0:{items:1}, 600:{items:2}, 1000:{items:3} }
});

$('.yt-next').off().on('click', function() { $slider.trigger('next.owl.carousel'); });
$('.yt-prev').off().on('click', function() { $slider.trigger('prev.owl.carousel'); });
}

// Handle the YouTube API state
window.onYouTubeIframeAPIReady = function() {
initPlayers();
};

// If API is ALREADY loaded (second time showing), fire immediately
$(document).ready(function() {
if (typeof YT !== 'undefined' && YT.loaded) {
initPlayers();
}
});

})(jQuery);
</script>

<?php
$html = ob_get_clean();
return str_replace('[youtube_slider]', $html, $content);
}
add_filter('the_content', 'my_youtube_owl_slider', 99);

23 October 2025

How to run google search console request submission by UI vision IDE automate?

 Run google search console request submission by UI vision IDE automate?


Source View --- Json Code


{
  "Name": "DemoCsvReadArray",
  "CreationDate": "2025-10-23",
  "Commands": [
    {
      "Command": "executeScript_Sandbox",
      "Target": "return [\n'https://freshnewnews.com/2026-fifa-world-cup-final-new-jersey-venue-predictions/',\n'https://freshnewnews.com/big-ears-festival-2026-knoxville-music-art-experience/',\n'https://freshnewnews.com/coachella-2026-your-ultimate-guide-to-headliners-dates-and-indio-music/',\n'https://freshnewnews.com/lady-gaga-mayhem-ball-tour-2026-austin-show-details-ticket-information/',\n'https://freshnewnews.com/90s-con-hartford-2026-the-ultimate-nostalgia-convention-guide/',\n'https://freshnewnews.com/route-66-centennial-2026-your-ultimate-historic-road-trip-guide/',\n'https://freshnewnews.com/america-250-philadelphia-museums-parades-birthday-bash-2026/'\n];",
      "Value": "urlArray",
      "Description": "All URLs to submit for indexing"
    },
    {
      "Command": "open",
      "Target": "https://search.google.com/u/1/search-console?resource_id=https%3A%2F%2Ffreshnewnews.com%2F",
      "Value": "",
      "Description": "Open GSC property"
    },
    {
      "Command": "pause",
      "Target": "10000",
      "Value": "",
      "Description": "Wait for GSC to fully load"
    },
    {
      "Command": "forEach",
      "Target": "urlArray",
      "Value": "currentURL",
      "Description": "Loop through all URLs"
    },
    {
      "Command": "echo",
      "Target": "Submitting URL: ${currentURL}",
      "Value": "green",
      "Description": ""
    },
    {
      "Command": "click",
      "Target": "xpath=//*[@id=\"gb\"]/div[2]/div[2]/div[2]/form/div/div/div/div/div/div/input[2]",
      "Value": "",
      "Targets": [
        "xpath=//*[@id=\"gb\"]/div[2]/div[2]/div[2]/form/div/div/div/div/div/div/input[2]",
        "xpath=//input[@type='text']",
        "xpath=//input[2]",
        "css=#gb > div.gb_Jd.gb_Md.gb_Xd > div.gb_Rd.gb_0d.gb_Ke.gb_Ue.gb_0e > div.gb_Je > form > div > div > div > div > div > div.d1dlne > input.Ax4B8.ZAGvjd"
      ],
      "Description": ""
    },
    {
      "Command": "type",
      "Target": "xpath=//*[@id=\"gb\"]/div[2]/div[2]/div[2]/form/div/div/div/div/div/div/input[2]",
      "Value": "${currentURL}",
      "Targets": [
        "xpath=//*[@id=\"gb\"]/div[2]/div[2]/div[2]/form/div/div/div/div/div/div/input[2]",
        "xpath=//input[@type='text']",
        "xpath=//input[2]",
        "css=#gb > div.gb_Jd.gb_Md.gb_Xd > div.gb_Rd.gb_0d.gb_Ke.gb_Ue.gb_0e > div.gb_Je > form > div > div > div > div > div > div.d1dlne > input.Ax4B8.ZAGvjd"
      ],
      "Description": ""
    },
    {
      "Command": "click",
      "Target": "css=#gb > div.gb_Jd.gb_Md.gb_Xd > div.gb_Rd.gb_0d.gb_Ke.gb_Ue.gb_0e > div.gb_Je > form > button.gb_Ne > svg",
      "Value": "",
      "Targets": [
        "xpath=//*[@id=\"gb\"]/div[2]/div[2]/div[2]/form/button[3]/svg",
        "css=#gb > div.gb_Jd.gb_Md.gb_Xd > div.gb_Rd.gb_0d.gb_Ke.gb_Ue.gb_0e > div.gb_Je > form > button.gb_Ne > svg"
      ],
      "Description": ""
    },
    {
      "Command": "click",
      "Target": "xpath=//*[@id=\"ow13\"]/div[3]/span/div/span/span/div/span/span",
      "Value": "",
      "Targets": [
        "xpath=//*[@id=\"ow13\"]/div[3]/span/div/span/span/div/span/span",
        "xpath=//span/span/div/span/span",
        "css=#ow13 > div.CerIhf > span > div > span > span > div > span > span.cTsG4"
      ],
      "Description": ""
    },
    {
      "Command": "click",
      "Target": "xpath=//*[@id=\"yDmH0d\"]/div[6]/div[2]/div/div[2]/div/button/span[5]",
      "Value": "",
      "Targets": [
        "xpath=//*[@id=\"yDmH0d\"]/div[6]/div[2]/div/div[2]/div/button/span[5]",
        "xpath=//span[5]",
        "css=#yDmH0d > div.uW2Fw-Sx9Kwc.uW2Fw-Sx9Kwc-OWXEXe-n2to0e.uW2Fw-qON5Qe-FoKg4d-Sx9Kwc-fZiSAe.yaahMe.y4Y5Tb.vaOP1b.b0BlYc.uW2Fw-Sx9Kwc-OWXEXe-FNFY6c > div.uW2Fw-wzTsW > div > div.uW2Fw-T0kwCb > div > button > span.mUIrbf-vQzf8d"
      ],
      "Description": ""
    },
    {
      "Command": "end",
      "Target": "",
      "Value": "",
      "Description": "End of loop"
    }
  ]
}

17 February 2025

How to add re-captcha v3 on all Elementor forms using coding?

 Add re-captcha v3 on all Elementor forms using coding


add_action('wp_footer',function(){

    ?>


<script src="https://www.google.com/recaptcha/api.js?render=6LfBtdkqAAAAAMTW5EedKrwh_yuGGNEbp5B-g96i"></script>

<script>


function addRecaptchaTokenToForms() {

    grecaptcha.ready(function () {

        grecaptcha.execute('6LfBtdkqAAAAAMTW5EedKrwh_yuGGNEbp5B-g96i', { action: 'elementor_form' }).then(function (token) {

            document.querySelectorAll('form').forEach(function (form) {

                let recaptchaInput = form.querySelector('input[name="recaptcha_token"]');

                if (!recaptchaInput) {

                    // If the hidden input doesn't exist, create it

                    recaptchaInput = document.createElement('input');

                    recaptchaInput.type = 'hidden';

                    recaptchaInput.name = 'recaptcha_token';

                    form.appendChild(recaptchaInput);

                }

                // Update the token value

                recaptchaInput.value = token;

            });

        });

    });

}


// Update reCAPTCHA token on form submission

function handleFormSubmission() {

    document.querySelectorAll('form').forEach(function (form) {

        form.addEventListener('submit', function (event) {

            event.preventDefault(); // Prevent default submission to ensure token is updated

            grecaptcha.ready(function () {

                grecaptcha.execute('6LfBtdkqAAAAAMTW5EedKrwh_yuGGNEbp5B-g96i', { action: 'elementor_form' }).then(function (token) {

                    let recaptchaInput = form.querySelector('input[name="recaptcha_token"]');

                    if (!recaptchaInput) {

                        recaptchaInput = document.createElement('input');

                        recaptchaInput.type = 'hidden';

                        recaptchaInput.name = 'recaptcha_token';

                        form.appendChild(recaptchaInput);

                    }

                    recaptchaInput.value = token;

                   

                });

            });

        });

    });

}


// Initial call when the page loads

addRecaptchaTokenToForms();

handleFormSubmission();


// Reattach reCAPTCHA token and submission handler when Elementor forms reload via AJAX

document.addEventListener('DOMContentLoaded', function () {

    document.body.addEventListener('DOMNodeInserted', function (event) {

        if (event.target.classList && event.target.classList.contains('elementor-widget-form')) {

            addRecaptchaTokenToForms();

            handleFormSubmission();

        }

    });

});


</script>

<style>

.grecaptcha-badge{

    display: none !important;

}

</style>

<?php

 });



/* add_action('elementor_pro/forms/new_record', function($record, $handler) { */

add_action('elementor_pro/forms/validation', function($record, $handler) {

    

    // Ensure this is the form you want to validate

    $form_name = $record->get_form_settings('form_name');

    /* Uncomment this if you want to target a specific form

    if ('your_form_name' !== $form_name) {

        return;

    }

    */


    $raw_fields = $record->get('fields');

    $fields = [];

    foreach ($raw_fields as $id => $field) {

        $fields[$id] = $field['value'];

    }


    // Get the reCAPTCHA token from the hidden field

    $recaptcha_token = isset($_POST['recaptcha_token']) ? sanitize_text_field($_POST['recaptcha_token']) : '';


    $recaptcha_secret = '6LfBtdkqAAAAAEZhOEScydwXVGauTNUxCWO0b2pi'; // Replace with your reCAPTCHA secret key


    // Verify the reCAPTCHA response

    $response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', [

        'body' => [

            'secret'   => $recaptcha_secret,

            'response' => $recaptcha_token,

            'remoteip' => $_SERVER['REMOTE_ADDR'], // Optional

        ],

    ]);


    $response_body = wp_remote_retrieve_body($response);

    $result = json_decode($response_body, true);


    if (empty($result['success']) || $result['score'] < 0.5) {

        // Stop the form submission if validation fails

        $handler->add_error_message('reCAPTCHA validation failed. Please try again.');

        $handler->add_error('recaptcha_token', 'Please verify you are not a robot.');


        // Stop further actions (e.g., saving data or sending email)

        $handler->add_response_data('success', false);


        return false; // Exit the hook early

    }


    // If validation passes, continue with normal form processing

}, 10, 2);

How to create video slider with cuncks of videos without download all videos?

 Create video slider with cuncks of videos without download all videos function custom_video_slider_shortcode() { $slider_id = 'vide...