Make WordPress Themes

Changeset 357891


Ignore:
Timestamp:
11/07/2026 02:58:34 PM (less than one hour ago)
Author:
themedropbox
Message:

New version of Nexversal - 3.6.0

Location:
nexversal/3.6.0
Files:
2 deleted
15 edited
1 copied

Legend:

Unmodified
Added
Removed
  • nexversal/3.6.0/404.php

    r357886 r357891  
    7171?>
    7272
    73 <main id="primary" class="site-main container">
     73<main id="primary" class="site-main container" tabindex="-1">
    7474    <div class="nx-404-wrapper">
    7575        <div class="nx-404-code">404</div>
  • nexversal/3.6.0/archive.php

    r357886 r357891  
    3131</div>
    3232
    33 <main id="primary" class="site-main container">
     33<main id="primary" class="site-main container" tabindex="-1">
    3434    <div class="nx-layout-grid">
    3535        <div class="nx-content-area">
  • nexversal/3.6.0/author.php

    r357886 r357891  
    1818?>
    1919
    20 <main id="primary" class="site-main">
     20<main id="primary" class="site-main" tabindex="-1">
    2121    <!-- Author Profile Hero -->
    2222    <section class="nx-archive-hero">
  • nexversal/3.6.0/functions.php

    r357886 r357891  
    161161add_action('wp_head', 'nexversal_early_theme_init', 1);
    162162
    163 /**
    164  * Built-in Monetization & Ad Engine
    165  */
    166 require_once get_template_directory() . '/inc/ad-manager.php';
    167163
    168164/**
    … …  
    999995}
    1000996
    1001 /**
    1002  * Output dynamic Schema.org JSON-LD structured data for articles and breadcrumbs.
    1003  * Supports Google Search Console Rich Results & CTR enhancement.
    1004  */
    1005 function nexversal_schema_markup() {
    1006     if (is_single()) {
    1007         global $post;
    1008         $schema = array(
    1009             '@context'         => 'https://schema.org',
    1010             '@type'            => 'BlogPosting',
    1011             'mainEntityOfPage' => array(
    1012                 '@type' => 'WebPage',
    1013                 '@id'   => get_permalink(),
    1014             ),
    1015             'headline'         => get_the_title(),
    1016             'datePublished'    => get_the_date('c'),
    1017             'dateModified'     => get_the_modified_date('c'),
    1018             'author'           => array(
    1019                 '@type' => 'Person',
    1020                 'name'  => get_the_author(),
    1021                 'url'   => get_author_posts_url(get_the_author_meta('ID')),
    1022             ),
    1023             'publisher'        => array(
    1024                 '@type' => 'Organization',
    1025                 'name'  => get_bloginfo('name'),
    1026                 'url'   => home_url('/'),
    1027             ),
    1028             'description'      => wp_strip_all_tags(get_the_excerpt()),
    1029         );
    1030 
    1031         if (has_post_thumbnail()) {
    1032             $image_url = get_the_post_thumbnail_url($post->ID, 'full');
    1033             if ($image_url) {
    1034                 $schema['image'] = array(
    1035                     '@type' => 'ImageObject',
    1036                     'url'   => esc_url($image_url),
    1037                 );
    1038             }
    1039         }
    1040 
    1041         echo "\n<!-- Nexversal Schema.org JSON-LD -->\n";
    1042         echo '<script type="application/ld+json">' . wp_json_encode($schema, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . "</script>\n";
    1043 
    1044         // BreadcrumbList Schema
    1045         $categories = get_the_category();
    1046         $breadcrumb = array(
    1047             '@context'        => 'https://schema.org',
    1048             '@type'           => 'BreadcrumbList',
    1049             'itemListElement' => array(
    1050                 array(
    1051                     '@type'    => 'ListItem',
    1052                     'position' => 1,
    1053                     'name'     => esc_html__('Home', 'nexversal'),
    1054                     'item'     => home_url('/'),
    1055                 ),
    1056             ),
    1057         );
    1058 
    1059         $pos = 2;
    1060         if (!empty($categories)) {
    1061             $breadcrumb['itemListElement'][] = array(
    1062                 '@type'    => 'ListItem',
    1063                 'position' => $pos,
    1064                 'name'     => $categories[0]->name,
    1065                 'item'     => get_category_link($categories[0]->term_id),
    1066             );
    1067             $pos++;
    1068         }
    1069 
    1070         $breadcrumb['itemListElement'][] = array(
    1071             '@type'    => 'ListItem',
    1072             'position' => $pos,
    1073             'name'     => get_the_title(),
    1074             'item'     => get_permalink(),
    1075         );
    1076 
    1077         echo '<script type="application/ld+json">' . wp_json_encode($breadcrumb, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . "</script>\n<!-- /Nexversal Schema.org JSON-LD -->\n";
    1078     }
    1079 }
    1080 add_action('wp_head', 'nexversal_schema_markup', 15);
    1081 
    1082 /**
    1083  * Output native Open Graph & Twitter Cards if no third-party SEO plugin is active.
    1084  */
    1085 function nexversal_open_graph_tags() {
    1086     // Skip if Yoast, RankMath, All In One SEO, or SEOPress is active
    1087     if (defined('WPSEO_VERSION') || defined('RANK_MATH_VERSION') || defined('AIOSEO_VERSION') || defined('SEOPRESS_VERSION')) {
    1088         return;
    1089     }
    1090 
    1091     $site_name = get_bloginfo('name');
    1092     $title     = wp_get_document_title();
    1093     $url       = is_singular() ? get_permalink() : home_url(add_query_arg(array(), $GLOBALS['wp']->request));
    1094     $type      = is_singular() ? 'article' : 'website';
    1095     $desc      = is_singular() ? wp_strip_all_tags(get_the_excerpt()) : get_bloginfo('description');
    1096     $image     = '';
    1097 
    1098     if (is_singular() && has_post_thumbnail()) {
    1099         $image = get_the_post_thumbnail_url(get_the_ID(), 'full');
    1100     }
    1101 
    1102     echo "\n<!-- Nexversal Open Graph & Twitter Cards -->\n";
    1103     printf('<meta property="og:site_name" content="%s">' . "\n", esc_attr($site_name));
    1104     printf('<meta property="og:type" content="%s">' . "\n", esc_attr($type));
    1105     printf('<meta property="og:title" content="%s">' . "\n", esc_attr($title));
    1106     printf('<meta property="og:description" content="%s">' . "\n", esc_attr($desc));
    1107     printf('<meta property="og:url" content="%s">' . "\n", esc_url($url));
    1108 
    1109     if (!empty($image)) {
    1110         printf('<meta property="og:image" content="%s">' . "\n", esc_url($image));
    1111         echo '<meta name="twitter:card" content="summary_large_image">' . "\n";
    1112         printf('<meta name="twitter:image" content="%s">' . "\n", esc_url($image));
    1113     } else {
    1114         echo '<meta name="twitter:card" content="summary">' . "\n";
    1115     }
    1116 
    1117     printf('<meta name="twitter:title" content="%s">' . "\n", esc_attr($title));
    1118     printf('<meta name="twitter:description" content="%s">' . "\n", esc_attr($desc));
    1119     echo "<!-- /Nexversal Open Graph -->\n";
    1120 }
    1121 add_action('wp_head', 'nexversal_open_graph_tags', 10);
     997
    1122998
    1123999/**
  • nexversal/3.6.0/home.php

    r357886 r357891  
    5252<?php endif; ?>
    5353
    54 <main id="primary" class="site-main container" style="padding-top: 30px; padding-bottom: 60px;">
     54<main id="primary" class="site-main container" tabindex="-1" style="padding-top: 30px; padding-bottom: 60px;">
    5555    <?php
    5656    // Trending categories bar for filtering
  • nexversal/3.6.0/index.php

    r357886 r357891  
    5454<?php endif; ?>
    5555
    56 <main id="primary" class="site-main container">
     56<main id="primary" class="site-main container" tabindex="-1">
    5757    <div class="nx-layout-grid">
    5858        <div class="nx-content-area">
  • nexversal/3.6.0/page.php

    r357886 r357891  
    1717?>
    1818
    19 <main id="primary" class="site-main container" style="margin-top: 36px;">
     19<main id="primary" class="site-main container" tabindex="-1" style="margin-top: 36px;">
    2020    <div class="nx-layout-grid">
    2121        <div class="nx-content-area">
  • nexversal/3.6.0/readme.txt

    r357886 r357891  
    44Tested up to: 7.0
    55Requires PHP: 7.4
    6 Stable tag: 3.5.9
     6Stable tag: 3.6.0
    77License: GNU General Public License v2 or later
    88License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    2222* Auto-generated Table of Contents (TOC) with smooth scrolling
    2323* Mobile-responsive drawer navigation and fast search
    24 * Built-in Schema.org JSON-LD structured data for Google Search
     24* Full accessibility (WCAG) compliant keyboard focus and skip navigation
    2525* Full WordPress block editor (Gutenberg) styles support
    2626* Fully translation-ready with .pot language catalog
    … …  
    5050Nexversal is distributed under the terms of the GNU General Public License v2 or later.
    5151
    52 This theme bundles the following third-party resources:
    53 
    54 * Inter Font (Family: Inter)
    55   Source: https://github.com/rsms/inter
    56   License: SIL Open Font License, 1.1 (http://scripts.sil.org/OFL)
     52This theme relies entirely on native, modern system font stacks (-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif) for blazing-fast loading speeds without external font dependencies.
    5753
    5854== Changelog ==
     55
     56= 3.6.0 =
     57* Accessibility: Added visible focus styles (:focus-visible) to dark mode toggle, search toggle, and mobile menu button.
     58* Accessibility: Added tabindex="-1" to <main id="primary"> across all templates to correctly move focus when the skip link is clicked.
     59* Compliance: Moved SEO output (JSON-LD structured data and Open Graph/Twitter meta tags) out of theme into plugin territory per Theme Review guidelines.
     60* Compliance: Removed internal paid upgrade system, licensing verification, and obtrusive Customizer locks.
     61* Documentation: Corrected resource list in readme.txt by removing unused bundled font entry.
    5962
    6063= 3.4.0 =
  • nexversal/3.6.0/search.php

    r357886 r357891  
    4040</div>
    4141
    42 <main id="primary" class="site-main container">
     42<main id="primary" class="site-main container" tabindex="-1">
    4343    <div class="nx-layout-grid">
    4444        <div class="nx-content-area">
  • nexversal/3.6.0/single.php

    r357886 r357891  
    1717?>
    1818
    19 <main id="primary" class="site-main container" style="margin-top: 36px;">
     19<main id="primary" class="site-main container" tabindex="-1" style="margin-top: 36px;">
    2020    <div class="nx-layout-grid">
    2121        <div class="nx-content-area">
  • nexversal/3.6.0/style.css

    r357886 r357891  
    55Author URI: https://nexversal.com/about
    66Description: A modern, ultra-fast, and elegant Tech & Magazine theme for WordPress engineered by Nexes Agency. Features a sleek hero section, responsive article cards, copy code buttons, reading progress bar, customizable accents, dark mode toggle, and rich SEO Schema markup.
    7 Version: 3.5.9
     7Version: 3.6.0
    88Requires at least: 6.0
    99Tested up to: 7.0
    … …  
    269269  cursor: pointer;
    270270  padding: 0;
    271   outline: none;
    272271  transition: all 0.2s ease;
    273272  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
     273}
     274
     275.nx-theme-toggle-btn:focus-visible {
     276  outline: 2px solid var(--nx-primary);
     277  outline-offset: 2px;
    274278}
    275279
    … …  
    321325  cursor: pointer;
    322326  padding: 0;
    323   outline: none;
    324327  transition: all 0.2s ease;
    325328  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
     329}
     330
     331.search-toggle-btn:focus-visible {
     332  outline: 2px solid var(--nx-primary);
     333  outline-offset: 2px;
    326334}
    327335
    … …  
    356364  color: var(--nx-dark);
    357365  padding: 0;
    358   outline: none;
    359366  transition: all 0.2s ease;
    360367  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
     368}
     369
     370.mobile-menu-toggle:focus-visible {
     371  outline: 2px solid var(--nx-primary);
     372  outline-offset: 2px;
    361373}
    362374
  • nexversal/3.6.0/template-about.php

    r357886 r357891  
    5050<?php endif; ?>
    5151
    52 <main id="primary" class="site-main container" style="padding-top: <?php echo $has_custom_about_content ? '30px' : '40px'; ?>; padding-bottom: 60px;">
     52<main id="primary" class="site-main container" tabindex="-1" style="padding-top: <?php echo $has_custom_about_content ? '30px' : '40px'; ?>; padding-bottom: 60px;">
    5353    <?php if ($has_custom_about_content && (!function_exists('nexversal_is_meta_disabled') || !nexversal_is_meta_disabled('disable_breadcrumbs')) && function_exists('nexversal_breadcrumbs')) : ?>
    5454        <div style="margin-bottom: 20px;">
  • nexversal/3.6.0/template-contact.php

    r357886 r357891  
    7474?>
    7575
    76 <main id="primary" class="site-main container" style="margin-top: 36px; margin-bottom: 60px;">
     76<main id="primary" class="site-main container" tabindex="-1" style="margin-top: 36px; margin-bottom: 60px;">
    7777    <?php
    7878    if (!function_exists('nexversal_is_meta_disabled') || !nexversal_is_meta_disabled('disable_breadcrumbs')) {
  • nexversal/3.6.0/template-full-width.php

    r357886 r357891  
    1717?>
    1818
    19 <main id="primary" class="site-main">
     19<main id="primary" class="site-main" tabindex="-1">
    2020    <div class="container container-narrow" style="max-width: 920px;">
    2121        <?php
  • nexversal/3.6.0/template-home.php

    r357886 r357891  
    8989<?php endif; ?>
    9090
    91 <main id="primary" class="site-main container" style="padding-top: 30px; padding-bottom: 60px;">
     91<main id="primary" class="site-main container" tabindex="-1" style="padding-top: 30px; padding-bottom: 60px;">
    9292    <div class="nx-layout-grid site-container">
    9393        <div class="nx-content-area content-area">
Note: See TracChangeset for help on using the changeset viewer.