Here is my speed booster file
<?php
/*
Plugin Name: tagDiv Speed Booster
Plugin URI: http://tagdiv.com
Description: Speed booster for Newspaper 6 and Newsmag 1.x themes - It moves the styles and all the scripts of the theme to the bottom when needed. It activates internal theme optimizations for better speed and it adds async js .
Author: tagDiv
Version: 4.1
Author URI: http://tagdiv.com
*/
define('TD_SPEED_BOOSTER' , 'v4.1');
class td_speed_booster {
private $style_footer_queue = array(); // here we keep all the stylesheets IDs that we want to move to the footer
private $is_ie = false; // if the browser is detected as IE, treat it differently
// here we keep the theme information
private $td_theme_name = '';
private $td_theme_version = '';
private $td_deploy_mode = '';
private $allowed_plugins = array(
'bbpress/bbpress.php',
'contact-form-7/wp-contact-form-7.php',
'jetpack/jetpack.php',
'js_composer/js_composer.php',
'td-speed-booster/td-speed-booster.php',
'font-awesome-4-menus/n9m-font-awesome-4.php',
'wordpress-seo/wp-seo.php',
'wp-user-avatar/wp-user-avatar.php',
'td-social-counter/td-social-counter.php',
'wp-super-cache/wp-cache.php'
);
// this class is instantiated at the bottom of this page
function __construct() {
add_action('td_wp_booster_loaded', array($this, 'start_booster'));
}
/**
* everything starts from here
*/
function start_booster() {
// read the theme version and name if defined
if (defined('TD_THEME_VERSION') and defined('TD_THEME_NAME') and defined('TD_DEPLOY_MODE')) {
$this->td_theme_version = TD_THEME_VERSION;
$this->td_theme_name = TD_THEME_NAME;
$this->td_deploy_mode = TD_DEPLOY_MODE;
} else {
return;
}
// detect IE 8 9 10 11
if (
!empty($_SERVER['HTTP_USER_AGENT'])
and (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) or (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0') !== false))
) {
$this->is_ie = true;
}
// add hooks
add_action('wp_enqueue_scripts', array($this, 'css_mover'), 1002); // 1002 priority - because visual composer has 1000 and we use 1001 in the wp010 theme
add_action('wp_enqueue_scripts', array($this, 'js_mover'), 1002); // 1002 priority - because visual composer has 1000 and we use 1001 in the wp010 theme
add_action('wp_footer', array($this, 'render_footer_styles'), 15);
// hide the body only on IE and Newspaper 6+
if (
$this->is_ie === false
and $this->td_theme_name == 'Newsmag'
) {
//add_action('wp_head', array($this, 'hide_body_inline_css'), 15);
}
/**
* jetpack is 'special' - it has to be moved like this. It has now only one CSS
* the two hooks are needed!
* @since 27.05.2015
*/
add_action('wp_print_styles', array($this, 'jetpack_mover'), 10);
add_action('wp_print_footer_scripts', array($this, 'jetpack_mover'), 10);
}
/**
* jetpack is 'special' - it has to be moved like this. It has now only one CSS
* @since 27.05.2015
*/
function jetpack_mover() {
$this->move_style_to_footer_queue('jetpack_css');
}
/**
* here we move the css
*/
function css_mover() {
if ($this->td_theme_name == 'Newsmag') {
// wp 011 - Newspaper 6
//$this->move_style_to_footer_queue('bbp-default-bbpress'); //bpress old
//$this->move_style_to_footer_queue('bbp-default'); //bpress
$this->move_style_to_footer_queue('google_font_open_sans');
$this->move_style_to_footer_queue('google_font_roboto');
$this->move_style_to_footer_queue('contact-form-7');
if ($this->is_ie === false) {
// move style.css theme style
//$this->move_style_to_footer_queue('js_composer_front');
//$this->move_style_to_footer_queue('td-theme'); //this is the main style of the theme. It's only moved on Newspaper 6!
}
}
//@todo test on newsmag
$this->move_style_to_footer_queue('woocommerce_frontend_styles'); //old woocommerce?
$this->move_style_to_footer_queue('woocommerce-layout');
$this->move_style_to_footer_queue('woocommerce-smallscreen');
$this->move_style_to_footer_queue('woocommerce-general');
$this->move_style_to_footer_queue('bp-legacy-css');
$this->move_style_to_footer_queue('td-theme');
$this->move_style_to_footer_queue('font-awesome-four');
//move revolution slider css
$this->move_style_to_footer_queue('rs-plugin-settings');
$this->move_style_to_footer_queue('genericons'); //still rev slider
}
/**
* move the js
*/
function js_mover() {
global $wp_scripts;
//detect revmin - revolution slider and do not move jquery, the plugin outputs raw js in the page!
if( !is_admin() and !isset($wp_scripts->registered['revmin'])){
if (is_ssl()) {
$td_protocol = 'https';
} else {
$td_protocol = 'http';
}
wp_deregister_script('jquery');
wp_register_script('jquery', ($td_protocol . '://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'), true, '1.11.1', true);
wp_enqueue_script('jquery');
}
/**
* move javascript to footer
*/
$this->move_js_to_footer('themepunchtools');
$this->move_js_to_footer('td-site-min');
$this->move_js_to_footer('revmin');
$this->move_js_to_footer('archivesCW');
$this->move_js_to_footer('js_composer_front');
$this->move_style_to_footer_queue('archives-cal-classiclight');
//print_r($wp_scripts);
// replace comment-reply.min.js with inline version
}
/**
* here we render the footer styles
* the styles are already deregistered when you call @see move_style_to_footer_queue ($style_id)
*/
function render_footer_styles() {
//get the theme version for style
$current_theme_version = $this->td_theme_version;
//on demo mode, auto generate version hourly + day - so we get a fresh css hourly
if ($this->td_deploy_mode == 'demo') {
$current_theme_version = date('jG');
}
if (isset($this->style_footer_queue['td-theme'])) {
// whatever the order, make damn sure that our td-theme style is LAST - we remove it from the queue and add it again at the end
$td_theme_value = $this->style_footer_queue['td-theme'];
unset($this->style_footer_queue['td-theme']);
$this->style_footer_queue['td-theme'] = $td_theme_value;
}
// output the new styles
foreach ($this->style_footer_queue as $style_id => $style_src) {
echo "<link rel='stylesheet' id='" . $style_id . "-css' href='" . $style_src . "?ver=" . $current_theme_version . "' type='text/css' media='all' />\n";
}
}
/**
* prevent flickering of the image until the style is loaded
*/
function hide_body_inline_css() {
echo '<style>body {visibility:hidden;}</style>';
}
/**
* the id of the style can be found in the source of the page, for example:
* <link rel='stylesheet' id='td-theme-css' => the id is 'td-theme' (note that the '-css' part is missing)
* using this method you can move other styles if needed
* Moves a style to the bottom of the page
* @param $style_id string - the id of the style
*/
function move_style_to_footer_queue($style_id) {
global $wp_styles;
if (!empty($wp_styles->registered[$style_id]) and !empty($wp_styles->registered[$style_id]->src)) {
$this->style_footer_queue[$style_id] = $wp_styles->registered[$style_id]->src;
wp_deregister_style($style_id);
}
}
/**
* @param $js_id string - the js file id (this is a bit more complex to get) @todo -> add a tutorial about how to get the theme js
*/
function move_js_to_footer($js_id) {
global $wp_scripts;
if (isset($wp_scripts->registered[$js_id])) {
wp_enqueue_script($js_id, ($wp_scripts->registered[$js_id]->src), '', $wp_scripts->registered[$js_id]->ver, true);
}
}
}
new td_speed_booster();
and here is registered scripts
registered scripts
archivesCW | http://www.domain.com/second/wp-content/plugins/archives-calendar-widget/jquery.archivesCW.min.js
aspexi-facebook-like-box | http://www.domain.com/second/wp-content/plugins/aspexi-facebook-like-box/js/aflb.js
jquery | http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
td-site-min | http://www.domain.com/second/wp-content/themes/Newsmag/js/tagdiv_theme.min.js
comment-reply | /wp-includes/js/comment-reply.min.js
registered styles
archives-cal-classiclight | http://www.domain.com/second/wp-content/plugins/archives-calendar-widget/themes/classiclight.css
awesome-weather | http://www.domain.com/second/wp-content/plugins/awesome-weather/awesome-weather.css
opensans-googlefont | https://fonts.googleapis.com/css?family=Open+Sans:400,300
google_font_roboto_cond | http://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400italic,700italic,400,300,700
google-fonts-style | http://fonts.googleapis.com/css?family=Open+Sans:400,700
js_composer_front | http://www.domain.com/second/wp-content/plugins/js_composer/assets/css/js_composer.css
td-theme | http://www.domain.com/second/wp-content/themes/Newsmag/style.css
td-theme-child | http://www.domain.com/second/wp-content/themes/Newsmag-child/style.css
Hi
Mean while i found a code, that i put into functions.php
// Runs before the posts are fetched
add_filter( 'pre_get_posts' , 'my_change_order' );
// Function accepting current query
function my_change_order( $query ) {
// Check if the query is for an archive
if($query->is_archive)
// Query was for archive, then set order
$query->set( 'order' , 'asc' );
// Return the query (else there's no more query, oops!)
return $query;
}
works like a charm π
Thank you
Thank you .. i found some very good explaining articles about sorting, but i cannot see where to set this in template files? Archve.php and category.php files don’t have “have_posts” query …
THANK YOU!
I followed your posts and managed my site to show in no time π
.. going for last 5 points π
-
This reply was modified 11 years by
gregy1403.
Nope π i’m thinking of buying theme from another developer π
it’s http://www.cele.si/new .. meanwhile when you’re there/here, can you fix Custom Post Type to work? π π
Thank you
Hi Radu
In past week we had like 3 different programmers trying to get Visual Composer to sort by CTP categories. None of them could make modifications π The last one says it’s definitely theme that makes a problem.
Do you have any estimated finish time regarding CTP support in Newsmag theme.
We wanted to start with our site tomorrow as of 1st July, but now we are pushed back to unknown date π
Thank you
Thank you Radu for this info …
waiting π
P.s. been reading a lot of posts mentioning CTP, so i think it’s a must to have CTP supported theme.
no they are not .. that’s my problem π Do you happened to know the solution how to us them in ajax dropdown?
I made categories in cpt.
In Visual Composer, there is a setting where you check what to include into VC. Then later in block setting you have to enter CPT name in Post type field and voila … now i just have to get CPT categories to work .. here i’m stucked
You can see at http://www.cele.si/new .. whole site is now made of CPT .. yet not sorted by categories π
Hi
Back again, this time with great news π
Visual Composer does display CPT! This is our test site –> http://www.cele.si/new/td_d_slug_10/
All we need to do now is, to be able to pick up categories of CPT when editing block in Visual Composer. At the moment it shows only post categories.
Any idea?
Thank you
please, disregard this post .. there is a big progress with CPT π thanx anyway
We cannot use posts, cause our site would be displaying Events from Event Espresso plugin which is CPT.
Can you give me some promising estimated dates regarding CPT support in Newsmag or even better, how to code CPT into Newsmag.
Thank you