Changeset 356013
- Timestamp:
- 10/28/2026 06:02:03 PM (20 hours ago)
- Location:
- magazinenewsportal/1.0.137
- Files:
-
- 2 added
- 19 edited
- 1 copied
-
. (copied) (copied from magazinenewsportal/1.0.136 )
-
ASSET-LICENSES.txt (modified) (3 diffs)
-
COPYRIGHT.txt (modified) (2 diffs)
-
assets/css/accessibility.css (added)
-
assets/css/navigation.css (added)
-
assets/images/LICENSE-screenshot.txt (modified) (1 diff)
-
assets/images/screenshot-source.txt (modified) (1 diff)
-
assets/js/main.js (modified) (4 diffs)
-
changelog.txt (modified) (1 diff)
-
front-page.php (modified) (1 diff)
-
functions.php (modified) (1 diff)
-
header.php (modified) (3 diffs)
-
inc/setup.php (modified) (3 diffs)
-
inc/template-tags.php (modified) (4 diffs)
-
languages/magazinenewsportal.pot (modified) (2 diffs)
-
languages/tr_TR.mo (modified) ( previous)
-
languages/tr_TR.po (modified) (2 diffs)
-
readme.txt (modified) (9 diffs)
-
searchform.php (modified) (1 diff)
-
single.php (modified) (3 diffs)
-
style.css (modified) (1 diff)
-
template-parts/agenda-sidebar.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
magazinenewsportal/1.0.137/ASSET-LICENSES.txt
r352465 r356013 1 MagazineNewsPortal 1.0.13 5- Complete bundled resource inventory1 MagazineNewsPortal 1.0.137 - Complete bundled resource inventory 2 2 3 3 Original theme material: Copyright (C) 2026 yineali; GPL-2.0-or-later. 4 4 Compatible third-party notices and sources remain as listed below. 5 Free distribution by the author does not remove recipients' GPL rights. 5 Screenshot provenance: GPT (OpenAI ChatGPT), confirmed by the owner on 2026-10-28. 6 The existing GPL screenshot permission is retained; CC0 authorization is pending. 6 7 7 8 PATH | LICENSE | COPYRIGHT/ATTRIBUTION | SOURCE/NOTICE 8 9 404.php | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 9 10 archive.php | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 11 ASSET-LICENSES.txt | GPL-2.0-or-later | 2026 yineali | This editable inventory 12 assets/css/accessibility.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 10 13 assets/css/cards-v109.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 11 14 assets/css/cards-v110.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt … … 41 44 assets/css/layout.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 42 45 assets/css/main.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 46 assets/css/navigation.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 43 47 assets/css/review-fixes.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 44 48 assets/css/typography-v113.css | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt … … 150 154 template-parts/content-page.php | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 151 155 theme.json | GPL-2.0-or-later | 2026 yineali | Editable files in this package; COPYRIGHT.txt / LICENSE.txt 152 ASSET-LICENSES.txt | GPL-2.0-or-later | 2026 yineali | This editable inventory153 156 154 157 Inline SVG artwork in PHP and CSS uses the compatible Lucide/Feather and -
magazinenewsportal/1.0.137/COPYRIGHT.txt
r352465 r356013 1 MagazineNewsPortal 1.0.13 51 MagazineNewsPortal 1.0.137 2 2 Copyright (C) 2026 yineali. 3 3 … … 13 13 Compatible third-party assets retain their notices and original CC0/MIT/ISC 14 14 licenses. Their underlying rights are not claimed as original theme artwork. 15 The owner expressly authorized GPL distribution of their screenshot photographs. 15 The owner confirmed on 2026-10-28 that the screenshot's photographic-style 16 illustrations were generated using GPT (OpenAI ChatGPT). The supplied composite's 17 existing GPL distribution permission is retained; no new CC0 dedication is claimed. 16 18 WordPress site uploads and third-party content outside the ZIP are separate. 17 19 -
magazinenewsportal/1.0.137/assets/images/LICENSE-screenshot.txt
r352465 r356013 5 5 Source: the owner-supplied screenshot.png in the theme root, supplied on 2026-10-08. 6 6 SHA-256: c6d5272cd7a8d2a9ec518fe0db339fe1178019b552c2240e253e26cedf9bdf56 7 The owner authorized free GPLv2-or-later distribution of the original photographs, 8 composite screenshot and original branding created by or for the owner. 9 This notice records that authorization; it does not replace third-party licenses. 7 Provenance clarification confirmed by the owner on 2026-10-28: 8 The photographic-style illustrations visible in this preview were generated 9 using GPT (OpenAI ChatGPT). They are AI-generated illustrations, not camera 10 photographs. The provided 1.0.136 package carried an owner-authorized 11 GPLv2-or-later distribution notice for the composite and original artwork. 12 That existing permission is preserved. This notice does not assert a new 13 public-domain/CC0 dedication without the owner's authorization and does not 14 replace the third-party licenses listed below. 10 15 Simple Icons graphics shown in the interface retain CC0-1.0; Bootstrap graphics 11 16 retain MIT; Lucide/Feather graphics retain ISC/MIT. Full sources and notices are -
magazinenewsportal/1.0.137/assets/images/screenshot-source.txt
r352465 r356013 1 1 MagazineNewsPortal owner-supplied preview 2 Image creation: the owner confirmed on 2026-10-28 that the photographic-style 3 illustrations in the preview were generated using GPT (OpenAI ChatGPT). 4 They are AI-generated illustrations, not camera photographs or stock images. 2 5 Source: screenshot.png, provided by the owner on 2026-10-08. 3 6 Preserved without resizing, recompressing, substituting or editing its images. -
magazinenewsportal/1.0.137/assets/js/main.js
r352465 r356013 38 38 const menuToggle = document.querySelector('.mnpn-menu-toggle-review'); 39 39 if (nav && menuToggle) { 40 const setMenuOpen = (open) => { 40 const mobileMenu = window.matchMedia('(max-width: 980px)'); 41 const menuClose = nav.querySelector('.mnpn-menu-close'); 42 const menuDialog = nav.closest('.mnpn-menu-dialog'); 43 const backdrop = document.querySelector('[data-mnpn-menu-backdrop]'); 44 const backgroundElements = []; 45 const focusableElements = () => Array.from(nav.querySelectorAll( 46 'a[href], button, input, select, textarea, summary, [tabindex]' 47 )).filter((element) => element.tabIndex >= 0 && !element.disabled && 48 !element.closest('[hidden], [inert]') && element.getClientRects().length && 49 window.getComputedStyle(element).visibility !== 'hidden'); 50 const restoreBackground = () => { 51 backgroundElements.forEach(([element, wasInert]) => { element.inert = wasInert; }); 52 backgroundElements.length = 0; 53 }; 54 const setMenuOpen = (requestedOpen, returnFocus = false) => { 55 const open = requestedOpen && mobileMenu.matches; 41 56 nav.classList.toggle('mnpn-menu-expanded', open); 42 57 menuToggle.setAttribute('aria-expanded', String(open)); 43 }; 44 const menuClose = nav.querySelector('.mnpn-menu-close'); 45 if (menuClose) menuClose.addEventListener('click', () => { 46 setMenuOpen(false); 47 menuToggle.focus(); 48 }); 58 document.body.classList.toggle('mnpn-menu-modal-open', open); 59 if (backdrop) backdrop.hidden = !open; 60 restoreBackground(); 61 if (open) { 62 menuDialog.setAttribute('role', 'dialog'); 63 menuDialog.setAttribute('aria-modal', 'true'); 64 menuDialog.setAttribute('aria-label', nav.getAttribute('aria-label')); 65 // Keep the dialog's ancestor chain usable while disabling its siblings. 66 let branch = nav; 67 while (branch && branch !== document.body) { 68 const parent = branch.parentElement; 69 if (!parent) break; 70 Array.from(parent.children).forEach((element) => { 71 if (element !== branch && element !== backdrop && 'inert' in element) { 72 backgroundElements.push([element, element.inert]); 73 element.inert = true; 74 } 75 }); 76 branch = parent; 77 } 78 const first = focusableElements()[0]; 79 if (first) first.focus(); 80 } else { 81 menuDialog.removeAttribute('role'); 82 menuDialog.removeAttribute('aria-modal'); 83 menuDialog.removeAttribute('aria-label'); 84 if (returnFocus) menuToggle.focus(); 85 } 86 }; 87 if (menuClose) menuClose.addEventListener('click', () => setMenuOpen(false, true)); 88 if (backdrop) backdrop.addEventListener('click', () => setMenuOpen(false, true)); 49 89 menuToggle.addEventListener('click', () => { 50 90 setMenuOpen(menuToggle.getAttribute('aria-expanded') !== 'true'); 51 91 }); 52 92 nav.addEventListener('keydown', (event) => { 53 if (event.key === 'Escape' && window.innerWidth <= 980) { 54 setMenuOpen(false); 55 menuToggle.focus(); 56 } 57 }); 93 if (!mobileMenu.matches || !nav.classList.contains('mnpn-menu-expanded')) return; 94 if (event.key === 'Escape') { 95 event.preventDefault(); 96 setMenuOpen(false, true); 97 } else if (event.key === 'Tab') { 98 const elements = focusableElements(); 99 const first = elements[0]; 100 const last = elements[elements.length - 1]; 101 if (event.shiftKey && document.activeElement === first) { 102 event.preventDefault(); 103 last.focus(); 104 } else if (!event.shiftKey && document.activeElement === last) { 105 event.preventDefault(); 106 first.focus(); 107 } 108 } 109 }); 110 document.addEventListener('focusin', (event) => { 111 if (mobileMenu.matches && nav.classList.contains('mnpn-menu-expanded') && !nav.contains(event.target)) { 112 const first = focusableElements()[0]; 113 if (first) first.focus(); 114 } 115 }); 116 const resetMenu = () => { 117 const hadMenuFocus = nav.contains(document.activeElement); 118 setMenuOpen(false); 119 if (hadMenuFocus) { 120 const target = mobileMenu.matches ? menuToggle : nav.querySelector('.mnpn-nav-list a'); 121 if (target) target.focus(); 122 } 123 }; 124 mobileMenu.addEventListener('change', resetMenu); 125 window.addEventListener('pagehide', () => setMenuOpen(false)); 58 126 } 59 127 const headerSearch = document.querySelector('.mnpn-header-search .mnpn-search-form input[type="search"]'); … … 69 137 document.addEventListener('keydown', (event) => { 70 138 if (!headerSearch) return; 139 if (nav && nav.classList.contains('mnpn-menu-expanded')) return; 71 140 72 141 const wantsCommandSearch = (event.key && event.key.toLowerCase() === 'k' && (event.metaKey || event.ctrlKey)); … … 153 222 }); 154 223 extra.addEventListener('pointerleave', () => { 155 if (desktopMenu.matches ) setExtraOpen(false);224 if (desktopMenu.matches && !extra.contains(document.activeElement)) setExtraOpen(false); 156 225 }); 157 226 extraButton.addEventListener('click', () => setExtraOpen(extraList.hidden)); … … 341 410 link.addEventListener('focus', () => link.setAttribute('aria-expanded', 'true')); 342 411 parent.addEventListener('mouseenter', () => link.setAttribute('aria-expanded', 'true')); 343 parent.addEventListener('mouseleave', () => link.setAttribute('aria-expanded', 'false')); 412 parent.addEventListener('mouseleave', () => { 413 if (!parent.contains(document.activeElement)) link.setAttribute('aria-expanded', 'false'); 414 }); 344 415 parent.addEventListener('focusout', (event) => { 345 416 if (!parent.contains(event.relatedTarget)) link.setAttribute('aria-expanded', 'false'); -
magazinenewsportal/1.0.137/changelog.txt
r352621 r356013 1 MagazineNewsPortal 1.0.137 - 2026-10-28 2 3 = 1.0.137 = 4 * Confined mobile-menu keyboard focus, focused the close control on open, and restored focus on close. 5 * Added dialog semantics, inert background, backdrop dismissal, scroll lock and responsive cleanup. 6 * Preserved desktop overflow-menu visibility while it contains keyboard focus. 7 * Provided a usable primary menu without JavaScript. 8 * Respected static front-page selection, including empty, password-protected and paginated pages. 9 * Rendered latest posts using the main WordPress query and native post-count/pagination/sticky behavior. 10 * Respected user-configured sidebar widget visibility/order and category post counts. 11 * Rendered the site's own copyright in the footer instead of forced advertising keywords. 12 * Clarified copyright, GPL terms and screenshot provenance; left Author URI unchanged. 13 * Improved light/dark small-text contrast, search landmark names, related-card labels and narrow search forms. 14 * Omitted empty author-name links without changing author URL generation or destinations. 15 1 16 MagazineNewsPortal 1.0.136 - 2026-10-08 2 17 -
magazinenewsportal/1.0.137/front-page.php
r352465 r356013 12 12 } 13 13 14 get_header(); 15 16 $magazinenewsportal_is_static_front = 'page' === get_option( 'show_on_front' ); 17 $magazinenewsportal_current_page = max( 1, absint( get_query_var( 'paged' ) ), absint( get_query_var( 'page' ) ) ); 18 $magazinenewsportal_posts_per_page = max( 4, absint( get_option( 'posts_per_page', 10 ) ) ); 19 $magazinenewsportal_published_counts = wp_count_posts( 'post' ); 20 $magazinenewsportal_published_total = isset( $magazinenewsportal_published_counts->publish ) ? absint( $magazinenewsportal_published_counts->publish ) : 0; 21 $magazinenewsportal_posts_page_id = absint( get_option( 'page_for_posts' ) ); 22 $magazinenewsportal_all_posts_url = $magazinenewsportal_posts_page_id ? get_permalink( $magazinenewsportal_posts_page_id ) : home_url( '/' ); 23 24 if ( ! $magazinenewsportal_all_posts_url ) { 25 $magazinenewsportal_all_posts_url = home_url( '/' ); 14 // A selected static page must render its own content, including an empty page. 15 if ( ! is_home() ) { 16 get_template_part( 'page' ); 17 return; 26 18 } 27 19 28 $magazinenewsportal_agenda_query = new WP_Query( 29 array( 30 'post_type' => 'post', 31 'post_status' => 'publish', 32 'posts_per_page' => $magazinenewsportal_posts_per_page, 33 'paged' => $magazinenewsportal_current_page, 34 'orderby' => 'date', 35 'order' => 'DESC', 36 'ignore_sticky_posts' => true, 37 ) 38 ); 20 get_header(); 21 global $wp_query; 22 $magazinenewsportal_current_page = max( 1, absint( get_query_var( 'paged' ) ), absint( get_query_var( 'page' ) ) ); 23 $magazinenewsportal_agenda_query = $wp_query; 24 $magazinenewsportal_published_total = absint( $wp_query->found_posts ); 39 25 40 26 ?> 41 27 <main id="primary" tabindex="-1" class="mnpn-main mnpn-home-main mnpn-agenda-home"> 42 <?php 43 $magazinenewsportal_has_front_page_intro = false; 44 if ( $magazinenewsportal_is_static_front && have_posts() ) { 45 while ( have_posts() ) { 46 the_post(); 47 $magazinenewsportal_front_page_content = (string) get_post_field( 'post_content', get_the_ID() ); 48 if ( '' !== trim( $magazinenewsportal_front_page_content ) || has_post_thumbnail() ) { 49 $magazinenewsportal_has_front_page_intro = true; 50 get_template_part( 'template-parts/content', 'page', array( 'compact_front_page' => true ) ); 51 } 52 } 53 } 54 ?> 55 <?php if ( ! $magazinenewsportal_has_front_page_intro ) : ?> 56 <h1 class="screen-reader-text"><?php echo esc_html( get_bloginfo( 'name' ) ); ?></h1> 57 <?php endif; ?> 28 <h1 class="screen-reader-text"><?php echo esc_html( get_bloginfo( 'name' ) ); ?></h1> 58 29 59 30 <section class="mnpn-agenda-section" aria-labelledby="mnpn-agenda-title"> -
magazinenewsportal/1.0.137/functions.php
r352621 r356013 12 12 } 13 13 14 define( 'MAGAZINENEWSPORTAL_VERSION', '1.0.13 6' );14 define( 'MAGAZINENEWSPORTAL_VERSION', '1.0.137' ); 15 15 define( 'MAGAZINENEWSPORTAL_DIR', get_template_directory() ); 16 16 -
magazinenewsportal/1.0.137/header.php
r352465 r356013 154 154 <strong><?php esc_html_e( 'Trends', 'magazinenewsportal' ); ?></strong> 155 155 </a> 156 <a class="mnpn-ref-quicklink mnpn-ref-popular" href="<?php echo esc_url( home_url( '/#mnpn-agenda-title' )); ?>">156 <a class="mnpn-ref-quicklink mnpn-ref-popular" href="<?php echo esc_url( $magazinenewsportal_shortcut_urls['posts'] ); ?>"> 157 157 <span class="mnpn-ref-quick-icon" aria-hidden="true"><?php magazinenewsportal_icon( 'flame' ); ?></span> 158 158 <strong><?php esc_html_e( 'Popular', 'magazinenewsportal' ); ?></strong> 159 159 </a> 160 <a class="mnpn-ref-quicklink mnpn-ref-newest" href="<?php echo esc_url( home_url( '/#mnpn-agenda-title' )); ?>">160 <a class="mnpn-ref-quicklink mnpn-ref-newest" href="<?php echo esc_url( $magazinenewsportal_shortcut_urls['posts'] ); ?>"> 161 161 <span class="mnpn-ref-quick-icon" aria-hidden="true"><?php magazinenewsportal_icon( 'clock' ); ?></span> 162 162 <strong><?php esc_html_e( 'Recently Added', 'magazinenewsportal' ); ?></strong> … … 173 173 <span><?php esc_html_e( 'Menu', 'magazinenewsportal' ); ?></span> 174 174 </button> 175 <div class="mnpn-menu-dialog"> 175 176 <nav id="site-navigation" class="mnpn-primary-nav mnpn-ref-primary" aria-label="<?php esc_attr_e( 'Primary menu', 'magazinenewsportal' ); ?>"> 176 177 <button class="mnpn-icon-button mnpn-menu-close" type="button"> … … 196 197 </div> 197 198 </nav> 199 </div> 198 200 </div> 199 201 <div class="mnpn-nav-backdrop" data-mnpn-menu-backdrop hidden aria-hidden="true"></div> -
magazinenewsportal/1.0.137/inc/setup.php
r352465 r356013 123 123 add_action( 'after_setup_theme', 'magazinenewsportal_content_width', 0 ); 124 124 125 126 /**127 * Keep category archive pagination at ten posts per page.128 *129 * @param WP_Query $query WordPress query instance.130 * @return void131 */132 function magazinenewsportal_category_posts_per_page( $query ) {133 if ( is_admin() || ! $query->is_main_query() || ! $query->is_category() ) {134 return;135 }136 137 $query->set( 'posts_per_page', 10 );138 }139 add_action( 'pre_get_posts', 'magazinenewsportal_category_posts_per_page' );140 125 141 126 /** … … 169 154 170 155 /** 171 * Keep search widgets out of the primary sidebar frontend.172 *173 * The widget remains registered and editable in WordPress; only its public174 * sidebar output is suppressed.175 *176 * @param array|false $instance Widget settings, or false to hide it.177 * @param WP_Widget $widget Widget object.178 * @param array $args Sidebar arguments.179 * @return array|false180 */181 function magazinenewsportal_hide_primary_sidebar_search( $instance, $widget, $args ) {182 if ( 'primary-sidebar' !== ( $args['id'] ?? '' ) ) {183 return $instance;184 }185 186 $is_search_widget = 'search' === $widget->id_base;187 $is_search_block = 'block' === $widget->id_base188 && ! empty( $instance['content'] )189 && has_block( 'core/search', $instance['content'] );190 191 return ( $is_search_widget || $is_search_block ) ? false : $instance;192 }193 add_filter( 'widget_display_callback', 'magazinenewsportal_hide_primary_sidebar_search', 10, 3 );194 195 /**196 * Keep categories directly above archives in the primary sidebar.197 *198 * The widget IDs remain untouched so WordPress can continue managing both199 * blocks normally; only their public display order is adjusted.200 *201 * @param array $sidebars Registered sidebar widget IDs.202 * @return array203 */204 function magazinenewsportal_order_primary_sidebar_sections( $sidebars ) {205 if ( is_admin() || empty( $sidebars['primary-sidebar'] ) || ! is_array( $sidebars['primary-sidebar'] ) ) {206 return $sidebars;207 }208 209 $block_widgets = get_option( 'widget_block', array() );210 $categories = array();211 $archives = array();212 213 foreach ( $sidebars['primary-sidebar'] as $widget_id ) {214 if ( ! preg_match( '/^block-(\d+)$/', $widget_id, $matches ) ) {215 continue;216 }217 218 $content = $block_widgets[ absint( $matches[1] ) ]['content'] ?? '';219 if ( has_block( 'core/categories', $content ) ) {220 $categories[] = $widget_id;221 } elseif ( has_block( 'core/archives', $content ) ) {222 $archives[] = $widget_id;223 }224 }225 226 if ( empty( $categories ) || empty( $archives ) ) {227 return $sidebars;228 }229 230 $moved = array_merge( $categories, $archives );231 $ordered = $categories;232 233 foreach ( $sidebars['primary-sidebar'] as $widget_id ) {234 if ( in_array( $widget_id, $moved, true ) ) {235 continue;236 }237 238 $ordered[] = $widget_id;239 }240 241 $ordered = array_merge( $ordered, $archives );242 243 $sidebars['primary-sidebar'] = $ordered;244 return $sidebars;245 }246 add_filter( 'sidebars_widgets', 'magazinenewsportal_order_primary_sidebar_sections' );247 248 /**249 156 * Return a file modification time for cache busting. 250 157 * … … 416 323 } 417 324 325 wp_enqueue_style( 326 'magazinenewsportal-navigation', 327 get_theme_file_uri( 'assets/css/navigation.css' ), 328 array( 'magazinenewsportal-layout' ), 329 magazinenewsportal_asset_version( 'assets/css/navigation.css' ) 330 ); 331 wp_enqueue_style( 332 'magazinenewsportal-accessibility', 333 get_theme_file_uri( 'assets/css/accessibility.css' ), 334 array( 'magazinenewsportal-navigation' ), 335 magazinenewsportal_asset_version( 'assets/css/accessibility.css' ) 336 ); 337 418 338 wp_enqueue_script( 419 339 'magazinenewsportal-main', -
magazinenewsportal/1.0.137/inc/template-tags.php
r352465 r356013 102 102 */ 103 103 function magazinenewsportal_get_header_shortcut_urls() { 104 $options = magazinenewsportal_get_options(); 105 $posts_page_id = absint( get_option( 'page_for_posts' ) ); 106 $posts_url = ( $posts_page_id && 'page' === get_option( 'show_on_front' ) && 'publish' === get_post_status( $posts_page_id ) ) ? get_permalink( $posts_page_id ) : home_url( '/' ) . '#latest'; 107 $posts_url = $posts_url ? $posts_url : home_url( '/' ) . '#latest'; 104 $options = magazinenewsportal_get_options(); 105 $posts_url = magazinenewsportal_get_posts_url(); 108 106 109 107 return array( 108 'posts' => $posts_url, 110 109 'inspiration' => magazinenewsportal_get_category_url( $options['header_inspiration_category'], $posts_url ), 111 110 'editor' => magazinenewsportal_get_category_url( $options['header_editor_category'], $posts_url ), 112 111 'trends' => magazinenewsportal_get_category_url( $options['header_trends_category'], $posts_url ), 113 112 ); 113 } 114 115 /** 116 * Return a working posts destination for the current Reading settings. 117 * 118 * @return string Posts index URL. 119 */ 120 function magazinenewsportal_get_posts_url() { 121 if ( 'page' === get_option( 'show_on_front' ) ) { 122 $posts_page_id = absint( get_option( 'page_for_posts' ) ); 123 if ( $posts_page_id && 'publish' === get_post_status( $posts_page_id ) ) { 124 $posts_url = get_permalink( $posts_page_id ); 125 if ( $posts_url ) { 126 return $posts_url; 127 } 128 } 129 return add_query_arg( 'post_type', 'post', home_url( '/' ) ); 130 } 131 return home_url( '/' ) . '#mnpn-agenda-title'; 114 132 } 115 133 … … 693 711 694 712 $posts_page_id = absint( get_option( 'page_for_posts' ) ); 695 if ( $posts_page_id && 'publish' === get_post_status( $posts_page_id ) ) {713 if ( 'page' === get_option( 'show_on_front' ) && $posts_page_id && 'publish' === get_post_status( $posts_page_id ) ) { 696 714 $links[] = array( 697 715 'label' => __( 'Blog', 'magazinenewsportal' ), … … 750 768 */ 751 769 function magazinenewsportal_footer_credit_link() { 752 echo '<span class="mnpn-footer-credit-text">© ' . (int) wp_date( 'Y' ) . ' <a class="mnpn-footer-credit-link" href=" https://narya.tr/" target="_blank" rel="noopener noreferrer">köpek maması & kedi maması</a>. ' . esc_html__( 'All rights reserved.', 'magazinenewsportal' ) . '</span>';770 echo '<span class="mnpn-footer-credit-text">© ' . (int) wp_date( 'Y' ) . ' <a class="mnpn-footer-credit-link" href="' . esc_url( home_url( '/' ) ) . '">' . esc_html( get_bloginfo( 'name' ) ) . '</a>. ' . esc_html__( 'All rights reserved.', 'magazinenewsportal' ) . '</span>'; 753 771 } 754 772 add_action( 'magazinenewsportal_footer_credit', 'magazinenewsportal_footer_credit_link' ); … … 898 916 } 899 917 900 $posts_page_id = absint( get_option( 'page_for_posts' ) ); 901 $all_posts_url = $posts_page_id ? get_permalink( $posts_page_id ) : home_url( '/' ); 902 if ( ! $all_posts_url ) { 903 $all_posts_url = home_url( '/' ); 904 } 918 $all_posts_url = magazinenewsportal_get_posts_url(); 905 919 ?> 906 920 <section class="widget mnpn-widget mnpn-sidebar-editor-choice"> -
magazinenewsportal/1.0.137/languages/magazinenewsportal.pot
r352465 r356013 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: MagazineNewsPortal 1.0. 99\n"5 "Project-Id-Version: MagazineNewsPortal 1.0.137\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/theme/magazinenewsportal\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 1033 1033 msgid "Comments on this story are password protected." 1034 1034 msgstr "" 1035 1036 #: template-parts/agenda-sidebar.php 1037 msgid "Sidebar search" 1038 msgstr "" -
magazinenewsportal/1.0.137/languages/tr_TR.po
r352465 r356013 2 2 msgid "" 3 3 msgstr "" 4 "Project-Id-Version: MagazineNewsPortal 1.0.13 5\n"4 "Project-Id-Version: MagazineNewsPortal 1.0.137\n" 5 5 "Report-Msgid-Bugs-To: https://wordpress.org/support/theme/magazinenewsportal/\n" 6 6 "POT-Creation-Date: 2026-09-23 11:45+0000\n" … … 1058 1058 msgid "Comments on this story are password protected." 1059 1059 msgstr "Bu içeriğin yorumları parola korumalıdır." 1060 1061 #: template-parts/agenda-sidebar.php 1062 msgid "Sidebar search" 1063 msgstr "Kenar çubuğu araması" -
magazinenewsportal/1.0.137/readme.txt
r352621 r356013 1 1 === MagazineNewsPortal === 2 2 Contributors: yineali 3 Stable tag: 1.0.137 3 4 Requires at least: 6.6 4 5 Tested up to: 7.1 … … 25 26 3. Configure menus, widgets and presentation options using WordPress settings. 26 27 4. Set the front page and posts page under Settings > Reading. 28 29 == Front page and posts page == 30 With "Your latest posts", the front page displays the news layout using the 31 native WordPress main query, posts-per-page setting, sticky posts and pagination. 32 With "A static page", the selected front page displays its own title, content, 33 featured image, page links and comments. No news feed is appended to that page. 34 The selected posts page uses home.php and the native posts loop. Its page body 35 is not displayed, as required by WordPress. Empty static pages remain pages. 36 Category archives also respect the WordPress posts-per-page setting. 37 38 == Keyboard navigation == 39 The first keyboard link skips the header and focuses the main content. On small 40 screens, opening the menu focuses its close button. Tab from the last menu link 41 returns to that button; Shift+Tab from the button returns to the last menu link. 42 Escape, the close button and the backdrop close the dialog and restore focus to 43 the menu opener. The rest of the page is inert while the mobile menu is open. 44 Changing between mobile and desktop clears the modal state and scroll lock. 45 The desktop More disclosure supports Enter, Space, ArrowDown, Tab and Escape. 46 The primary menu remains available when JavaScript is disabled. 27 47 28 48 == Presentation == … … 43 63 The .pot file is the translation template. WordPress Site Language selects the 44 64 catalogue. Posts, pages, categories, menu labels and custom widget content are 45 site content and require their own translation. The local edition retains the 46 site owner's expressly requested literal Turkish footer keywords. 65 site content and require their own translation. 47 66 48 67 == Security and native WordPress APIs == … … 77 96 == Copyright and License == 78 97 MagazineNewsPortal WordPress Theme, Copyright (C) 2026 yineali. 98 MagazineNewsPortal is distributed under the terms of the GNU GPL v2 or later. 79 99 Code, documentation, translations and original theme artwork: GPLv2 or later. 80 100 Copyright and complete file inventory: COPYRIGHT.txt and ASSET-LICENSES.txt. … … 82 102 Use, modification and redistribution, including commercial use, are permitted. 83 103 Third-party assets retain their original compatible licenses below. 104 This program is free software: you may redistribute it and/or modify it under 105 the GNU General Public License as published by the Free Software Foundation, 106 either version 2 of the License, or (at your option) any later version. 107 This program is distributed in the hope that it will be useful, but WITHOUT 108 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 109 FOR A PARTICULAR PURPOSE. See LICENSE.txt for the complete license terms. 84 110 85 111 == Resources == … … 93 119 No font binary, vector master or third-party brand mark is included. 94 120 Asset notice: assets/images/LICENSE-logo.txt. 95 * screenshot.png: owner-supplied theme preview, received on 2026-10-08 and 96 preserved byte-for-byte. The owner confirmed rights to the photographic 97 artwork created by or for them and authorized GPLv2-or-later distribution. 98 Original composite and photographs: Copyright (C) 2026 yineali, GPLv2 or later. 121 * screenshot.png: owner-supplied theme preview, preserved byte-for-byte from the 122 1.0.136 package. On 2026-10-28, the owner confirmed that the photographic-style 123 illustrations shown in the preview were generated using GPT (OpenAI ChatGPT). 124 These are AI-generated illustrations, not camera photographs or stock photos. 125 The supplied composite retains its existing GPLv2-or-later distribution license. 126 No new public-domain dedication is asserted without the owner's authorization. 99 127 Source: screenshot.png in this package; assets/images/screenshot-source.txt. 100 128 Notice: assets/images/LICENSE-screenshot.txt. … … 118 146 119 147 == Distribution == 120 The local edition preserves the owner's literal Turkish footer credit. 121 The separate WordPress.org edition displays only the site owner's name and URL 122 in its copyright area. The directory edition does not contain a forced keyword 123 credit. Automated Theme Check passing is not approval by the Theme Review Team. 148 The public footer displays the current site owner's name and home URL in its 149 copyright area. It contains no forced advertising keywords or author copyright. 150 Automated Theme Check passing is not approval by the Theme Review Team. 124 151 Review references: 125 152 https://make.wordpress.org/themes/handbook/review/required/ … … 133 160 134 161 == Changelog == 162 = 1.0.137 = 163 * Fixed mobile menu focus containment, initial focus, Escape and focus restoration. 164 * Added a modal backdrop, background isolation, resize cleanup and no-JS menu access. 165 * Kept desktop More links visible while keyboard focus remains inside them. 166 * Rendered the selected static front page without an appended news feed. 167 * Used the main posts query and respected native post counts and sticky posts. 168 * Restored configured widget visibility/order and native category pagination. 169 * Replaced forced footer advertising with the current site's copyright. 170 * Clarified theme copyright, license and screenshot provenance. 171 * Improved small-text contrast in light/dark modes and accessible search labels. 172 * Matched related-card accessible names to their visible category labels. 173 * Prevented narrow-screen search overflow and empty author-name links. 174 135 175 = 1.0.136 = 136 176 * Fixed a fatal comment-submit formatting error that broke the single-post layout. … … 154 194 155 195 == Upgrade Notice == 196 = 1.0.137 = 197 Fixes keyboard navigation and Reading settings. Existing menus, content and saved 198 theme options remain intact. Footer copyright now identifies the current site. 199 156 200 = 1.0.136 = 157 201 Fixes broken single-post rendering, comment reply controls and mobile footer overflow. -
magazinenewsportal/1.0.137/searchform.php
r352465 r356013 12 12 } 13 13 14 $magazinenewsportal_search_id = wp_unique_id( 'mnpn-search-field-' ); 15 $magazinenewsportal_args = isset( $args ) && is_array( $args ) ? $args : array(); 16 $magazinenewsportal_variant = isset( $magazinenewsportal_args['magazinenewsportal_variant'] ) && is_string( $magazinenewsportal_args['magazinenewsportal_variant'] ) ? sanitize_html_class( $magazinenewsportal_args['magazinenewsportal_variant'] ) : ''; 17 $magazinenewsportal_header = in_array( $magazinenewsportal_variant, array( 'header', 'header-catalog' ), true ); 18 $magazinenewsportal_sidebar = 'sidebar' === $magazinenewsportal_variant; 19 $magazinenewsportal_catalog = 'header-catalog' === $magazinenewsportal_variant; 20 $magazinenewsportal_class = $magazinenewsportal_sidebar ? 'mnpn-agenda-search' : 'mnpn-search-form' . ( $magazinenewsportal_header ? ' mnpn-search-form-header' : '' ) . ( $magazinenewsportal_catalog ? ' mnpn-search-form-catalog' : '' ); 21 $magazinenewsportal_label = isset( $magazinenewsportal_args['aria_label'] ) ? sanitize_text_field( $magazinenewsportal_args['aria_label'] ) : __( 'Search for:', 'magazinenewsportal' ); 14 $magazinenewsportal_search_id = wp_unique_id( 'mnpn-search-field-' ); 15 $magazinenewsportal_args = isset( $args ) && is_array( $args ) ? $args : array(); 16 $magazinenewsportal_variant = isset( $magazinenewsportal_args['magazinenewsportal_variant'] ) && is_string( $magazinenewsportal_args['magazinenewsportal_variant'] ) ? sanitize_html_class( $magazinenewsportal_args['magazinenewsportal_variant'] ) : ''; 17 $magazinenewsportal_header = in_array( $magazinenewsportal_variant, array( 'header', 'header-catalog' ), true ); 18 $magazinenewsportal_sidebar = 'sidebar' === $magazinenewsportal_variant; 19 $magazinenewsportal_catalog = 'header-catalog' === $magazinenewsportal_variant; 20 $magazinenewsportal_class = $magazinenewsportal_sidebar ? 'mnpn-agenda-search' : 'mnpn-search-form' . ( $magazinenewsportal_header ? ' mnpn-search-form-header' : '' ) . ( $magazinenewsportal_catalog ? ' mnpn-search-form-catalog' : '' ); 21 $magazinenewsportal_label = isset( $magazinenewsportal_args['aria_label'] ) ? sanitize_text_field( $magazinenewsportal_args['aria_label'] ) : __( 'Search for:', 'magazinenewsportal' ); 22 if ( '' === trim( $magazinenewsportal_label ) ) { 23 $magazinenewsportal_label = __( 'Search for:', 'magazinenewsportal' ); 24 } 22 25 $magazinenewsportal_placeholder = isset( $magazinenewsportal_args['placeholder'] ) 23 26 ? sanitize_text_field( $magazinenewsportal_args['placeholder'] ) -
magazinenewsportal/1.0.137/single.php
r352465 r356013 115 115 116 116 <div class="mnpn-modern-meta"> 117 <?php if ( '' !== trim( $magazinenewsportal_author_name ) ) : ?> 117 118 <div class="mnpn-modern-author"> 118 119 <a href="<?php echo esc_url( $magazinenewsportal_author_url ); ?>" aria-label="<?php echo esc_attr( sprintf( /* translators: %s: Author name. */ __( 'View all posts by %s', 'magazinenewsportal' ), $magazinenewsportal_author_name ) ); ?>"> … … 136 137 <span class="mnpn-author-verified" title="<?php esc_attr_e( 'Verified author', 'magazinenewsportal' ); ?>" aria-label="<?php esc_attr_e( 'Verified author', 'magazinenewsportal' ); ?>">✓</span> 137 138 </div> 139 <?php endif; ?> 138 140 139 141 <time class="mnpn-modern-meta-item" datetime="<?php echo esc_attr( get_the_date( DATE_W3C ) ); ?>"> … … 191 193 $magazinenewsportal_related_categories = get_the_category( $magazinenewsportal_related_post->ID ); 192 194 $magazinenewsportal_related_category = $magazinenewsportal_related_categories ? $magazinenewsportal_related_categories[0] : null; 195 $magazinenewsportal_related_label = magazinenewsportal_get_post_link_label( $magazinenewsportal_related_post->ID ); 196 if ( $magazinenewsportal_related_category ) { 197 $magazinenewsportal_related_label .= ' — ' . magazinenewsportal_localize_theme_label( $magazinenewsportal_related_category->name ); 198 } 193 199 ?> 194 200 <article class="mnpn-related-card"> 195 <a class="mnpn-related-media" href="<?php echo esc_url( get_permalink( $magazinenewsportal_related_post ) ); ?>" aria-label="<?php echo esc_attr( magazinenewsportal_get_post_link_label( $magazinenewsportal_related_post->ID )); ?>">201 <a class="mnpn-related-media" href="<?php echo esc_url( get_permalink( $magazinenewsportal_related_post ) ); ?>" aria-label="<?php echo esc_attr( $magazinenewsportal_related_label ); ?>"> 196 202 <?php if ( has_post_thumbnail( $magazinenewsportal_related_post ) ) : ?> 197 203 <?php -
magazinenewsportal/1.0.137/style.css
r352621 r356013 6 6 Author URI: https://viralportalnews.narya.tr/ 7 7 Description: A colorful, responsive news and magazine theme with editorial layouts, widget areas, block styles, and native WordPress settings. 8 Version: 1.0.13 68 Version: 1.0.137 9 9 Requires at least: 6.6 10 10 Tested up to: 7.1 -
magazinenewsportal/1.0.137/template-parts/agenda-sidebar.php
r352465 r356013 12 12 } 13 13 14 $posts_page_id = absint( get_option( 'page_for_posts' ) ); 15 $all_posts_url = $posts_page_id ? get_permalink( $posts_page_id ) : home_url( '/' ); 16 17 if ( ! $all_posts_url ) { 18 $all_posts_url = home_url( '/' ); 19 } 14 $all_posts_url = magazinenewsportal_get_posts_url(); 20 15 21 16 $popular_ids = magazinenewsportal_get_most_read_post_ids( 7 ); … … 57 52 get_search_form( 58 53 array( 54 'aria_label' => __( 'Sidebar search', 'magazinenewsportal' ), 59 55 'magazinenewsportal_variant' => 'sidebar', 60 56 'placeholder' => __( 'Search...', 'magazinenewsportal' ),
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)