403Webshell
Server IP : 3.147.158.171  /  Your IP : 216.73.216.216
Web Server : Apache/2.4.67 (Amazon Linux) OpenSSL/3.5.5
System : Linux ip-172-31-2-178.us-east-2.compute.internal 6.1.172-216.329.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 20 06:31:34 UTC 2026 x86_64
User : ec2-user ( 1000)
PHP Version : 8.4.21
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /tsai/repo/sites/dev/wp-content/plugins/tsai-plugin/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /tsai/repo/sites/dev/wp-content/plugins/tsai-plugin/includes/class-tsai-series-nav.php
<?php
if (!defined('ABSPATH')) {
    exit;
}

class TSAI_Series_Nav {

    public function __construct() {
        add_shortcode('tsai_series_nav', array($this, 'render'));
        add_action('wp_enqueue_scripts', array($this, 'enqueue_assets'));
    }

    public function enqueue_assets() {
        if (!is_singular('post')) {
            return;
        }
        wp_enqueue_style(
            'tsai-series-nav',
            TSAI_PLUGIN_URL . 'assets/css/tsai-series-nav.css',
            array(),
            '1.0.0'
        );
    }

    public function render($atts = array()) {
        $post_id = get_the_ID();
        if (!$post_id) {
            return '';
        }

        $terms = wp_get_post_terms($post_id, 'article_series');
        if (is_wp_error($terms) || empty($terms)) {
            return '';
        }

        $series_term = $terms[0];
        $current_part = (int) get_post_meta($post_id, '_series_part_number', true);

        $series_posts = get_posts(array(
            'post_type'      => 'post',
            'post_status'    => 'publish',
            'tax_query'      => array(
                array(
                    'taxonomy' => 'article_series',
                    'terms'    => $series_term->term_id,
                ),
            ),
            'meta_key'       => '_series_part_number',
            'orderby'        => 'meta_value_num',
            'order'          => 'ASC',
            'posts_per_page' => -1,
        ));

        if (empty($series_posts)) {
            return '';
        }

        $total = count($series_posts);
        $series_name = esc_html($series_term->name);
        $prefix_pattern = '/^' . preg_quote($series_term->name, '/') . ',\s*Part\s+\d+:\s*/';

        $items = '';
        foreach ($series_posts as $sp) {
            $part_num = (int) get_post_meta($sp->ID, '_series_part_number', true);
            $title = get_the_title($sp->ID);
            $title = preg_replace($prefix_pattern, '', $title);
            $title = esc_html($title);
            $num = esc_html($part_num);

            if ($sp->ID === $post_id) {
                $items .= '<li class="tsai-series-nav__item is-current" aria-current="page">'
                    . '<span class="tsai-series-nav__link">'
                    . '<span class="tsai-series-nav__part-num">' . $num . '</span>'
                    . '<span class="tsai-series-nav__part-title">' . $title . '</span>'
                    . '</span></li>';
            } else {
                $url = esc_url(get_permalink($sp->ID));
                $items .= '<li class="tsai-series-nav__item">'
                    . '<a href="' . $url . '" class="tsai-series-nav__link">'
                    . '<span class="tsai-series-nav__part-num">' . $num . '</span>'
                    . '<span class="tsai-series-nav__part-title">' . $title . '</span>'
                    . '</a></li>';
            }
        }

        return '<nav class="tsai-series-nav" aria-label="Article series navigation">'
            . '<div class="tsai-series-nav__header">'
            . '<div class="tsai-series-nav__title">' . $series_name . '</div>'
            . '<div class="tsai-series-nav__subtitle">Part ' . esc_html($current_part) . ' of ' . esc_html($total) . '</div>'
            . '</div>'
            . '<ol class="tsai-series-nav__list">' . $items . '</ol>'
            . '</nav>';
    }
}

new TSAI_Series_Nav();

Youez - 2016 - github.com/yon3zu
LinuXploit