Guest User

Untitled

a guest
Sep 2nd, 2020
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.14 KB | None | 0 0
  1. <?php
  2.  
  3. define('TAGDIV_ROOT', get_template_directory_uri());
  4. define('TAGDIV_ROOT_DIR', get_template_directory());
  5.  
  6.  
  7. // load the deploy mode
  8. require_once( TAGDIV_ROOT_DIR . '/tagdiv-deploy-mode.php' );
  9.  
  10.  
  11. /**
  12. * Theme configuration.
  13. */
  14. require_once TAGDIV_ROOT_DIR . '/includes/tagdiv-config.php';
  15.  
  16.  
  17. /**
  18. * Theme wp booster.
  19. */
  20. require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/tagdiv-wp-booster-functions.php');
  21.  
  22.  
  23. /**
  24. * Theme page generator support.
  25. */
  26. if ( ! class_exists('tagdiv_page_generator' ) ) {
  27. include_once ( TAGDIV_ROOT_DIR . '/includes/tagdiv-page-generator.php');
  28. }
  29.  
  30.  
  31. /* ----------------------------------------------------------------------------
  32. * Add theme support for sidebar
  33. */
  34. add_action( 'widgets_init', function() {
  35. register_sidebar(
  36. array(
  37. 'name'=> 'Newspaper default',
  38. 'id' => 'td-default',
  39. 'before_widget' => '<aside id="%1$s" class="widget %1$s %2$s">',
  40. 'after_widget' => '</aside>',
  41. 'before_title' => '<div class="block-title"><span>',
  42. 'after_title' => '</span></div>'
  43. )
  44. );
  45. });
  46.  
  47. add_filter( 'pre_handle_404', function($param1, $param2) {
  48.  
  49. $post_id = url_to_postid("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  50. if (!empty($post_id)) {
  51.  
  52. $td_post_theme_settings = td_util::get_post_meta_array( $post_id, 'td_post_theme_settings' );
  53. if ( is_array( $td_post_theme_settings ) && array_key_exists( 'smart_list_template', $td_post_theme_settings ) ) {
  54. return true;
  55. } elseif ( !empty($td_post_theme_settings['td_post_template']) && td_global::is_tdb_registered() && td_global::is_tdb_template($td_post_theme_settings['td_post_template'], true) ) {
  56. $td_template_id = td_global::tdb_get_template_id($td_post_theme_settings['td_post_template']);
  57. $td_template_content = get_post_field('post_content', $td_template_id);
  58. $is_tdb_smartlist = tdb_util::get_shortcode($td_template_content, 'tdb_single_smartlist');
  59.  
  60. if ( $is_tdb_smartlist ) {
  61. return true;
  62. }
  63. }
  64. }
  65. return $param1;
  66. }, 10, 2);
  67.  
  68.  
  69.  
  70. /**
  71. * Theme setup.
  72. */
  73. add_action( 'after_setup_theme', function (){
  74.  
  75. /**
  76. * Loads the theme's translated strings.
  77. */
  78. load_theme_textdomain( strtolower(TD_THEME_NAME ), get_template_directory() . '/translation' );
  79.  
  80. /**
  81. * Theme menu location.
  82. */
  83. register_nav_menus(
  84. array(
  85. 'header-menu' => 'Header Menu (main)',
  86. 'footer-menu' => 'Footer Menu',
  87. )
  88. );
  89. });
  90.  
  91.  
  92. /* ----------------------------------------------------------------------------
  93. * Add theme support for features
  94. */
  95. add_theme_support('title-tag');
  96. add_theme_support('post-thumbnails');
  97. add_theme_support('automatic-feed-links');
  98. add_theme_support('html5', array('comment-list', 'comment-form', 'search-form', 'gallery', 'caption'));
  99. add_theme_support('woocommerce');
  100. add_theme_support('bbpress');
  101. add_theme_support('align-wide');
  102. add_theme_support('align-full');
  103.  
  104.  
  105. global $content_width;
  106. if ( !isset($content_width) ) {
  107. $content_width = 696;
  108. }
  109.  
  110.  
  111.  
  112. /* ----------------------------------------------------------------------------
  113. * Woo Commerce
  114. */
  115. // breadcrumb
  116. add_filter('woocommerce_breadcrumb_defaults', 'tagdiv_woocommerce_breadcrumbs');
  117. function tagdiv_woocommerce_breadcrumbs() {
  118. return array(
  119. 'delimiter' => ' <i class="td-icon-right td-bread-sep"></i> ',
  120. 'wrap_before' => '<div class="entry-crumbs" itemprop="breadcrumb">',
  121. 'wrap_after' => '</div>',
  122. 'before' => '',
  123. 'after' => '',
  124. 'home' => _x('Home', 'breadcrumb', 'newspaper'),
  125. );
  126. }
  127.  
  128. // Number of product per page 4
  129. add_filter('loop_shop_per_page', 'tagdiv_wc_loop_shop_per_page' );
  130. function tagdiv_wc_loop_shop_per_page($cols) {
  131. return 4;
  132. }
  133.  
  134. // use own pagination
  135. if (!function_exists('woocommerce_pagination')) {
  136. // pagination
  137. function woocommerce_pagination() {
  138. tagdiv_page_generator::get_pagination();
  139. }
  140. }
  141.  
  142. if (!function_exists('woocommerce_output_related_products')) {
  143. // Number of related products
  144. function woocommerce_output_related_products() {
  145. woocommerce_related_products(array(
  146. 'posts_per_page' => 4,
  147. 'columns' => 4,
  148. 'orderby' => 'rand',
  149. )); // Display 4 products in rows of 1
  150. }
  151. }
  152.  
  153.  
  154.  
  155.  
  156.  
  157. /* ----------------------------------------------------------------------------
  158. * front end css files
  159. */
  160. if( !function_exists('tagdiv_theme_css') ) {
  161. function tagdiv_theme_css() {
  162. wp_enqueue_style('td-theme', get_stylesheet_uri() );
  163.  
  164. // load the WooCommerce CSS only when needed
  165. if ( class_exists('WooCommerce', false) ) {
  166. wp_enqueue_style('td-theme-woo', get_template_directory_uri() . '/style-woocommerce.css' );
  167. }
  168.  
  169. // load the Bbpress CSS only when needed
  170. if ( class_exists('bbPress', false) ) {
  171. wp_enqueue_style('td-theme-bbpress', get_template_directory_uri() . '/style-bbpress.css' );
  172. }
  173. }
  174. }
  175. add_action('wp_enqueue_scripts', 'tagdiv_theme_css', 1001);
  176.  
  177.  
  178.  
  179. if ( defined( 'WP_CLI' ) && WP_CLI ) {
  180. require_once 'td-generate-import.php';
  181. }
  182.  
  183.  
  184.  
  185.  
  186. add_filter('upgrader_clear_destination', function($removed, $local_destination, $remote_destination, $args) {
  187. usleep(500);
  188. return $removed;
  189. }, 10, 4);
  190.  
  191.  
  192. if ( defined('TD_COMPOSER' ) && strpos( td_util::get_registration(), chr(42 ) ) > 0 ) {
  193.  
  194. if ( is_admin()) {
  195.  
  196. $value = get_transient( 'td_update_theme_' . TD_THEME_NAME );
  197. if ( false === $value ) {
  198.  
  199. tagdiv_check_theme_version();
  200.  
  201. } else {
  202.  
  203. $td_theme_update_to_version = get_transient( 'td_update_theme_to_version_' . TD_THEME_NAME );
  204. if ( false !== $td_theme_update_to_version ) {
  205. $theme_update_to_version = tagdiv_util::get_option( 'theme_update_to_version' );
  206.  
  207. if ( ! empty( $theme_update_to_version ) ) {
  208.  
  209. add_filter( 'pre_set_site_transient_update_themes', function( $transient ) {
  210.  
  211. $to_version = tagdiv_util::get_option( 'theme_update_to_version' );
  212. if ( ! empty( $to_version )) {
  213. $args = array();
  214. $to_version = json_decode( $to_version, true );
  215. $to_version_keys = array_keys( $to_version );
  216. if ( is_array( $to_version_keys ) && count( $to_version_keys ) ) {
  217. $to_version_serial = $to_version_keys[ 0 ];
  218. $to_version_url = $to_version[$to_version_serial];
  219. $theme_slug = get_template();
  220.  
  221. $transient->response[ $theme_slug ] = array(
  222. 'theme' => $theme_slug,
  223. 'new_version' => $to_version_serial,
  224. 'url' => "https://tagdiv.com/" . TD_THEME_NAME,
  225. 'clear_destination' => true,
  226. 'package' => add_query_arg( $args, $to_version_url ),
  227. );
  228. }
  229. }
  230.  
  231. return $transient;
  232. });
  233. delete_site_transient('update_themes');
  234. }
  235. } else {
  236.  
  237. $td_theme_update_latest_version = get_transient( 'td_update_theme_latest_version_' . TD_THEME_NAME );
  238.  
  239. if ( false !== $td_theme_update_latest_version ) {
  240.  
  241. add_filter( 'pre_set_site_transient_update_themes', function( $transient ) {
  242.  
  243. $latest_version = tagdiv_util::get_option( 'theme_update_latest_version' );
  244. if ( ! empty( $latest_version ) ) {
  245. $args = array();
  246. $latest_version = json_decode( $latest_version, true );
  247.  
  248. $latest_version_keys = array_keys( $latest_version );
  249. if ( is_array( $latest_version_keys ) && count( $latest_version_keys ) ) {
  250. $latest_version_serial = $latest_version_keys[ 0 ];
  251. $latest_version_url = $latest_version[$latest_version_serial];
  252. $theme_slug = get_template();
  253.  
  254. $transient->response[ $theme_slug ] = array(
  255. 'theme' => $theme_slug,
  256. 'new_version' => $latest_version_serial,
  257. 'url' => "https://tagdiv.com/" . TD_THEME_NAME,
  258. 'clear_destination' => true,
  259. 'package' => add_query_arg( $args, $latest_version_url ),
  260. );
  261. }
  262. }
  263.  
  264. return $transient;
  265. });
  266. delete_site_transient('update_themes');
  267. }
  268. }
  269. }
  270. }
  271.  
  272.  
  273. add_filter( 'admin_body_class', function ( $classes ) {
  274. $new_update_available = false;
  275. $latest_version = tagdiv_util::get_option( 'theme_update_latest_version' );
  276.  
  277. if ( ! empty( $latest_version ) ) {
  278. $latest_version = json_decode( $latest_version, true );
  279.  
  280. $latest_version_keys = array_keys( $latest_version );
  281. if ( is_array( $latest_version_keys ) && count( $latest_version_keys ) ) {
  282. $latest_version_serial = $latest_version_keys[ 0 ];
  283.  
  284. if ( 1 == version_compare( $latest_version_serial, TD_THEME_VERSION ) ) {
  285. $new_update_available = true;
  286. }
  287. }
  288. }
  289.  
  290. if ( $new_update_available ) {
  291. $classes .= ' td-theme-update';
  292. }
  293.  
  294. return $classes;
  295. } );
  296.  
  297.  
  298. add_filter( 'admin_head', function () {
  299.  
  300. $td_update_theme_ready = get_transient( 'td_update_theme_' . TD_THEME_NAME );
  301. if ( false !== $td_update_theme_ready ) {
  302.  
  303. $update_data = '';
  304.  
  305. $td_theme_update_to_version = get_transient( 'td_update_theme_to_version_' . TD_THEME_NAME );
  306. if ( false !== $td_theme_update_to_version ) {
  307.  
  308. $data = tagdiv_util::get_option( 'theme_update_to_version' );
  309. if ( ! empty( $data ) ) {
  310. $update_data = $data;
  311. }
  312. } else {
  313.  
  314. $data = tagdiv_util::get_option( 'theme_update_latest_version' );
  315. if ( ! empty( $data ) ) {
  316. $update_data = $data;
  317. }
  318. }
  319.  
  320. if ( ! empty( $update_data ) ) {
  321. ob_start();
  322. ?>
  323. <script>
  324. var tdData = {
  325. version: <?php echo '' . $update_data ?>,
  326. adminUrl: "<?php echo admin_url() ?>",
  327. themeName: "<?php echo TD_THEME_NAME ?>",
  328. };
  329. </script>
  330. <?php
  331. echo ob_get_clean();
  332. }
  333. }
  334. } );
  335. }
  336.  
  337. // Load comments reply support if needed
  338. add_action( 'comment_form_before', function() {
  339. if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
  340. wp_enqueue_script( 'comment-reply' );
  341. }
  342. });
  343.  
  344. add_action('upgrader_process_complete', function($upgrader, $data) {
  345.  
  346. if ($data['action'] == 'update' && $data['type'] == 'theme' ) {
  347.  
  348. // clear flag to update theme
  349. delete_transient( 'td_update_theme_' . TD_THEME_NAME );
  350.  
  351. // clear flag to update theme to latest version
  352. delete_transient( 'td_update_theme_latest_version_' . TD_THEME_NAME );
  353.  
  354. // clear flag to update theme to specific version
  355. delete_transient( 'td_update_theme_to_version_' . TD_THEME_NAME );
  356.  
  357. // clear flag to update to a specific version
  358. tagdiv_util::update_option( 'theme_update_to_version', '' );
  359.  
  360. $current_deactivated_plugins = tagdiv_options::get_array('td_theme_deactivated_current_plugins' );
  361.  
  362. if ( ! empty( $current_deactivated_plugins ) ) {
  363. $theme_setup = tagdiv_theme_plugins_setup::get_instance();
  364. $theme_setup->theme_plugins( array_keys( $current_deactivated_plugins ) );
  365.  
  366. ob_start();
  367.  
  368. ?>
  369.  
  370. <script>
  371. setTimeout(function(){
  372. jQuery('.td-button-install-plugins').trigger('click');
  373. }, 1000);
  374. </script>
  375.  
  376. <?php
  377.  
  378. echo ob_get_clean();
  379. }
  380. }
  381.  
  382. }, 10, 2);
  383.  
  384.  
  385. add_filter('upgrader_pre_install', function( $return, $theme) {
  386. if ( is_wp_error( $return ) ) {
  387. return $return;
  388. }
  389.  
  390. $theme = isset( $theme['theme'] ) ? $theme['theme'] : '';
  391.  
  392. if ( $theme != get_stylesheet() ) { //If not current
  393. return $return;
  394. }
  395.  
  396. tagdiv_options::update_array( 'td_theme_deactivated_current_plugins', '' );
  397. $deactivation = new tagdiv_current_plugins_deactivation();
  398. $deactivation->td_deactivate_current_plugins( true );
  399.  
  400. return $return;
  401.  
  402. }, 10, 2);
  403.  
  404.  
  405.  
  406. add_action( 'current_screen', function() {
  407. $current_screen = get_current_screen();
  408.  
  409. if ( 'update-core' === $current_screen->id && isset( $_REQUEST['update_theme'] )) {
  410.  
  411. add_action('admin_head', function() {
  412.  
  413. $theme_name = $_REQUEST['update_theme'];
  414.  
  415. ob_start();
  416. ?>
  417.  
  418. <script>
  419. jQuery(window).ready(function() {
  420.  
  421. 'use strict';
  422.  
  423. var $formUpgradeThemes = jQuery('form[name="upgrade-themes"]');
  424. if ( $formUpgradeThemes.length ) {
  425. var $input = $formUpgradeThemes.find('input[type="checkbox"][value="<?php echo esc_js( $theme_name ) ?>"]');
  426. if ($input.length) {
  427. $input.attr( 'checked', true );
  428. $formUpgradeThemes.submit();
  429. }
  430. }
  431. });
  432. </script>
  433.  
  434. <?php
  435. echo ob_get_clean();
  436. });
  437. }
  438. });
  439.  
  440.  
  441.  
  442.  
  443.  
  444. add_filter( 'render_block', 'td_filter_youtube_embed', 10, 3);
  445. function td_filter_youtube_embed( $block_content, $block ) {
  446.  
  447. if( 'core-embed/youtube' !== $block['blockName'] ) {
  448. return $block_content;
  449. }
  450.  
  451. $matches = array();
  452. preg_match('/iframe(.*)src=\"(\S*)\"/', $block_content, $matches);
  453.  
  454. if ( !empty($matches) && is_array($matches) && 3 === count($matches)) {
  455. $url = $matches[2];
  456. if (strpos($url, '?') > 0 ) {
  457. $new_url = $url . '&enablejsapi=1';
  458. } else {
  459. $new_url = $url . '?enablejsapi=1';
  460. }
  461. $block_content = str_replace( $url, $new_url, $block_content);
  462. }
  463.  
  464. return $block_content;
  465. }
Advertisement
Add Comment
Please, Sign In to add comment