') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - techpub/kapow-theme: The Theme component of the Kapow! boilerplate/framework for WordPress site development. · GitHub
Skip to content

Latest commit

History

71 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Kapow! Theme

The Theme component of the Kapow! boilerplate/framework for WordPress site development.

About

The Kapow! Theme provides developers with a solid foundation for developing their next theme whether it be for a client site or for the Wordpress theme repository. Originally a fork of the popular _s/Underscores theme by Automattic, the Kapow! Theme has evolved into a time saving and feature rich WordPress theme boilerplate.

Features of Kapow! Theme include:

  • Clearly defined theme structure following best theme development practices
  • Complete set of default page templates and associated template parts
  • More granular approach to setting up and enhancing theme functions/features
  • Example functions to help you with registering post types, taxonomies etc
  • Several useful action hooks for adding enhancements to theme templates
  • WCAG compliant markup and navigation as well as useful content filters
  • Fully translatable with default language files supplied
  • PHP code that complies with the WordPress coding standards

Requirements

Kapow! Theme is designed to work along side the other Kapow! modules: Skeleton, Sass, Grunt.

However, this theme can be used independently of Kapow!

If this is the case you'll just need to get hold of the unminified JS and CSS assets from Kapow Skeleton so that you can process these with your own build tools.

Installation

If you are planning on using the full Kapow! boilerplate for your next project, we have a setup script to help you get up and running fast.

1). Rename the kapow-theme in this repo to match your desired theme name.

2). Open the theme folder in your text/code editor and do a case sensitive find and replace for each of these strings of text, replacing them with project specific alternatives:

  • My Project = "proper" name
  • my-project = "slug" name, theme directory slug and theme textdomain
  • my_project = database name & function name prefix
  • Author Name = your or your organisation's name
  • hello@my-project.com = your email address
  • www​.​my-project.com = your website address

3). Copy the theme folder to the /wp-content/themes/ directory.

4). Activate the theme through the 'Themes' menu in WordPress.

5). Make a nice hot cup of tea/coffee and bask in your magnificence!

Usage

You may want to revert some of the modifications made to wp-config.php to match your own WordPress set-up.

Enhance your theme by editing files referenced in functions.php that reside in the /inc/ directory e.g. register custom post types and taxonomies, add/remove theme support, turn on custom theme features etc.

You can also add a custom logo in the 'Site Identity' section of the Apperance > Customise screen.

Changelog

1.1.0 - 23.10.2015 - Slight restructure to accomodate new Kapow! bower asset syncing.

1.0.0 - 17.09.2015 - Initial release, requires additional testing in the wild.

About

The Theme component of the Kapow! boilerplate/framework for WordPress site development.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages