This theme is under development. It's possible to have breaking changes until first public version.
Using on production is on Your own risk.
Tinsta (as from Tiny standard) is free open source WordPress theme, that aims to provide very standard web site layout with a lot of customization options.
- PHP 5.4 or later
- WordPress 4.5 or later
- Download latest Tinsta
- Unzip
tinsta-master.zip
and renametinsta-master
totinsta
- Upload to your
wp-content/themes
- In your admin panel, go to Appearance -> Themes
- Click on the 'Activate' button to use your new theme right away
- Navigate to Appearance -> Customize in your admin panel and customize to taste
Constant should be relative to WP_CONTENT_DIR
and must starts with slash.
Defaults WP_CONTENT_DIR
/cache/tinsta/css
define('TINSTA_STYLESHEET_CACHE_DIR', '/cache/tinsta/css');
Defaults is enabled
define('TINSTA_INTEGRATIONS', true);
Defaults is enabled, if have no integration with enabled plugin that provide content builder (eg. Site Origin Panels, Elementor, etc.)
define('TINSTA_POST_WIDGETS_REPLACE_CONTENT', false);
Tinsta theme is not in the theme directory, so cannot be updated through WordPress built-in store. The only way to get automatic updates is via github-udpater plugin.
Manual update is always an option. Check INSTALLATION for more information.
Because the theme's purpose is not to be a complete design builder, but to provide a lot of customization options within the theme's scope.
There is a lot of plugins that provide such function, and at current stage Tinsta theme cannot provide something better than these options. Anyway, the theme can integrate with some of these plugins very well, so you can pick the plugin you are familiar with it and do the job.
Why no per post type or page sidebars (widget areas), how can manage different widgets in same sidebars?
Adding variants to sidebar per post_type or type family will be very limited way to managing widgets. Using plugin that provide widget logic is more flexible way to do the goal. There is plenty of good solutions for this, so right now there is no reason to reinvent the wheel. Check some of the Widget Logic recommentations, and pick by your choice.
¯\_(ツ)_/¯
The theme cannot provide a replacement functions for everything in WordPress's plugins garden. So here is short list of plugins that can be helpful.
- Menu Logic:
- Widget Logic:
- Performance:
- Widgets:
- Disable Core functionalities
add_action('tinsta_css_regenerated', function ($scss_file, $hash) {
MyCachePlugin::clean()
}, 5, 2);
add_action('tinsta_after_settings_import', function($data, $defaults, $tinsta_settings_only) {
// Update some custsom functionality that depends
// of Tinsta's settings.
}, 5, 3);
Force options to given values, also hide customizer controls. It is useful when creating child theme and want to force some theme settings, and hide the controls.
add_filter('tinsta_force_options', function ($options) {
$options['typography_font_size'] = 22;
return $options
});
Alter theme default options. Could be useful in case when extending.
add_filter('tinsta_default_options', function ($options) {
$options['some_custom_variable'] = 'some-value';
return $options
});
Override or add variables exposed to scss scripts.
add_filter('tinsta_stylesheet_args', function ($args) {
$args['variables']['my-custom-font-size'] = '32px';
return $args;
});
add_filter('tinsta_render_posts_loop_template', function ($templates, $post, $display_mode, $post_post_type, $layout) {
if ($display_mode == 'single') {
if ($layout == 'custom_layout_single') {
$templates = [
'path/to/my-custom-layout.php',
];
}
}
return $templates;
}, 5, 5);
add_filter('tinsta_post_type_layouts_single', function ($layouts, $post_type_name) {
$layouts['custom_layout_single'] = 'My Custom Layout';
return $layouts;
});
add_filter('tinsta_post_type_layouts_archive', function ($layouts, $post_type_name) {
$layouts['custom_layout_archive'] = 'My Custom Layout';
return $layouts;
});
add_filter('tinsta_supported_customizer_post_types', function ($post_types) {
unset($post_types['attachment']);
return $post_types;
});
WordPress constant SCRIPT_DEBUG
also allow forcing stylesheet regeneration,
but need to send no-cache
HTTP header (usually Shift
+Refresh or
Chrome's Disable cache option in dev panel)
-
Pull requests are welcome.
-
Have idea or feedback, feel free to open an issue and share.
-
If you want to help with translation, then please wait until first stable release.
-
Code changes have to be PSR1/2 compatible, with 2 spaces indention.
Tinsta theme is available under the terms of the GPL-v2 or later license.
The theme come bundled with following third-party resources:
scssphp
Licenses: MIT License
Source: http://leafo.github.io/scssphp/
Normalize.css
Licenses: MIT License
Source: http://github.com/necolas/normalize.css
Line Awesome
Licenses: https://icons8.com/good-boy-license/
Source: https://icons8.com/line-awesome
SmoothScroll
Licenses: MIT License
Source: https://github.com/galambalazs/smoothscroll-for-websites
A JavaScript polyfill for Flexbox
License: MIT License
Source: https://github.com/jonathantneal/flexibility
position: sticky; The polyfill!
Licenses: MIT License
Source: https://github.com/matthewp/position--sticky-
HTML5 Shiv
Licenses: MIT/GPL2
Source: https://github.com/aFarkas/html5shiv
-prefix-free
Licenses: MIT License
Source: https://leaverou.github.io/prefixfree/
Selectivizr2
Licenses: MIT License
Source: https://github.com/corysimmons/selectivizr2
remPolyfill
Licenses: MIT License
Source: https://github.com/nbouvrette/remPolyfill
Respond.js min/max-width media query polyfill
Licenses: MIT License
Source: https://github.com/scottjehl/Respond