tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support('title-tag'); add_theme_support( 'post-thumbnails' ); register_nav_menus([ 'top' => __('Top Menu', 'lawcarta'), 'bottom' => __('Bottom Menu', 'lawcarta'), 'social' => __( 'Social Links Menu', 'lawcarta' ), ]); add_editor_style([ '/assets/css/styles-main-page.min.css', ]); }); /** * Setup title */ add_filter('document_title_separator', function () { return '|'; }); add_filter('document_title_parts', function ($title) { unset($title['tagline']); return $title; }, 10, 1); /** * Enqueue scripts and styles. */ function lawcarta_fonts_url() { $font_families = [ 'Open Sans:300,400,600,700', 'PT Serif:400,700', ]; $query_args = [ 'family' => urlencode(implode('|', $font_families)), ]; $fonts_url = add_query_arg($query_args, 'https://fonts.googleapis.com/css'); return esc_url_raw($fonts_url); } add_action('wp_enqueue_scripts', function () { wp_enqueue_style('lawcarta-fonts', lawcarta_fonts_url(), array(), null); wp_enqueue_style('bootstrap', '//cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css', null, null); wp_enqueue_script('bootstrap', '//cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js', null, null, true); wp_enqueue_style('splide', '//cdn.jsdelivr.net/npm/@splidejs/splide@4.1.3/dist/css/splide.min.css', null, null); wp_enqueue_script('splide', '//cdn.jsdelivr.net/npm/@splidejs/splide@4.1.3/dist/js/splide.min.js', null, null, true); // wp_enqueue_script('lawcarta-js', get_theme_file_uri('/assets/js/faqSearch.js'), ['custom-jquery'], null, true); // wp_enqueue_style('lawcarta-libs', get_theme_file_uri('/assets/css/libs.min.css'), [], '100'); wp_enqueue_style('lawcarta-style-index', get_theme_file_uri('/assets/css/styles-main-page.min.css'), null, '116'); // if(is_front_page()){ // wp_enqueue_style('lawcarta-style-index', get_theme_file_uri('/assets/css/main-page.min.css'),['lawcarta-libs'], '101'); // }else{ // wp_enqueue_style('lawcarta-style-index', get_theme_file_uri('/assets/css/main-page.min.css'),['lawcarta-libs'], '101'); // wp_enqueue_style('lawcarta-style', get_stylesheet_uri(), ['lawcarta-custom']); // } }); /** * Filter Menu Item Class */ add_filter('wp_setup_nav_menu_item', function ($menu_item) { $meta = LawCarta_Menu_Item_Custom_Fields::getMeta($menu_item); $menu_item->meta = $meta; $menu_item->meta['type'] = $menu_item->object; if ($menu_item->object == 'page') { $menu_item->meta['slug'] = get_post_field( 'post_name', $menu_item->object_id ); } else if ($menu_item->object == 'media_category') { $menu_item->meta['slug'] = get_term_field( 'slug', $menu_item->object_id ); } return $menu_item; }); /** * Setup Admin Portal */ function lawcarta_company_field_cb() { $setting = get_option('lawcarta_company'); $setting = isset( $setting ) ? esc_attr( $setting ) : ''; echo ''; } add_action('admin_init', function () { register_setting('general', 'lawcarta_company', [ 'type' => 'string', ]); add_settings_field( 'lawcarta_company_field', __('Company Name', 'lawcarta'), 'lawcarta_company_field_cb', 'general' ); }); /** * Setup TinyMCE */ add_filter('tiny_mce_before_init', function ($settings) { $opts = '*[*]'; $settings['valid_elements'] = $opts; $settings['extended_valid_elements'] = $opts; $settings['valid_children']="+a[div|p|ul|ol|li|h1|h2|h3|h4|h5|h5|h6]"; return $settings; }); function enableSearchQuery() { return !empty($_POST['search_text']); } function getFaqPosts($args) { if (enableSearchQuery()) { // WP magic add_filter( 'posts_where', 'my_filter_post_where' ); } $posts = get_posts($args); if (enableSearchQuery()) { remove_filter( 'posts_where', 'my_filter_post_where' ); } return $posts; } function getFaaTaxonomyIds() { if (!enableSearchQuery()) { return false; } $posts = getFaqPosts([ 'post_type' => 'fac_category_answer', 'suppress_filters' => false, 'numberposts' => -1, ]); if (count($posts) == 0) { return []; } $tIds = []; foreach ($posts as $post) { $taxonomies = get_the_terms($post, 'fac_category_type'); if (count($taxonomies) > 0) { foreach ($taxonomies as $taxonomy) { if (!in_array($taxonomy->term_id, $tIds)) { $tIds[] = $taxonomy->term_id; } } } } return $tIds; } function my_filter_post_where( $where) { global $wpdb; if (!enableSearchQuery()) { return $where; } $parts = explode(' ', trim($_POST['search_text'])); $likeConditions = []; foreach($parts as $part){ $likeConditions [] = $wpdb->posts . '.post_title LIKE \'%' . trim(esc_sql( $part )) . '%\' '; $likeConditions [] = $wpdb->posts . '.post_content LIKE \'%' . trim(esc_sql( $part )) . '%\' '; } $where .= ' AND ( '.implode(' OR ', $likeConditions) .' )'; return $where; } function get_lawcarta_url(){ $urlParts = parse_url(home_url()); $scheme = isset($urlParts['scheme']) ? $urlParts['scheme'] . '://' : ''; $baseTemplate = basename( get_page_template() ); $host = isset($urlParts['host']) ? $urlParts['host'] : ''; if (defined('LAWCARTA_SUBDOMAIN')) { $hostParts = explode('.', $host); if (count($hostParts) === 3) { $wp_sub_domain = array_shift($hostParts); } if (!empty(LAWCARTA_SUBDOMAIN)) { array_unshift($hostParts, LAWCARTA_SUBDOMAIN); } $host = implode('.', $hostParts); //Fix for staging env because of it use same domain carta.live for both lawcarta/livecarta if(LAWCARTA_ENVIRONMENT_NAME == 'staging' && $wp_sub_domain == 'staging-live'){ $host = str_replace('staging-law', 'staging-live',$host); } //Temporary fix for new prod env because of it use same domain carta.live for both lawcarta/livecarta if(LAWCARTA_ENVIRONMENT_NAME == 'prod' && $wp_sub_domain == 'prod-live'){ $host = str_replace('prod-law', 'prod-live',$host); } //Temporary fix for new prod env because of it use same domain carta.live for both lawcarta/livecarta if(LAWCARTA_ENVIRONMENT_NAME == 'prod' && $wp_sub_domain == ''){ $host = str_replace('app-law', 'app',$host); } } $port = isset($urlParts['port']) ? $urlParts['port'] : ''; if (defined('LAWCARTA_PORT')) { $port = LAWCARTA_PORT; } if (!empty($port)) { $port = ':' . $port; } return "$scheme$host$port"; } function get_lawcarta_ga_config(){ $res = ''; if(wp_get_theme() == 'LawCarta'){ $res = LAWCARTA_GA_CONFIG; }elseif(wp_get_theme() == 'LiveCarta'){ $res = LIVECARTA_GA_CONFIG; } return $res; } add_filter( 'post_thumbnail_html', 'remove_width_attribute', 10 ); add_filter( 'image_send_to_editor', 'remove_width_attribute', 10 ); function remove_width_attribute( $html ) { $html = preg_replace( '/(width|height)="\d*"\s/', "", $html ); return $html; } /* Register template redirect action callback */ add_action('template_redirect', 'meks_remove_wp_archives'); /* Remove archives */ function meks_remove_wp_archives(){ //If we are on category or tag or date or author archive if( is_category() || is_tag() || is_date() || is_author() ) { global $wp_query; $wp_query->set_404(); //set to 404 not found page } } add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2); function special_nav_class ($classes, $item) { if ($item->current){ $classes[] = 'active '; } return $classes; } function add_custom_class($classes=array(), $menu_item=false) { //todo: detect blog post page if ( !is_page() && 'blog' == strtolower($menu_item->title) && !in_array( 'active', $classes ) ) { $classes[] = 'active'; } return $classes; } add_filter('nav_menu_css_class', 'add_custom_class', 100, 2); /** * Add Disallow for some file types. * Add "Disallow: /wp-login.php/\n". * Remove "Allow: /wp-admin/admin-ajax.php\n". * Calculate and add a "Sitemap:" link. */ add_filter( 'robots_txt', function( $output, $public ) { /** * If "Search engine visibility" is disabled, * strongly tell all robots to go away. */ if ( '0' == $public || LAWCARTA_ENVIRONMENT_NAME != 'prod') { $output = "User-agent: *\nDisallow: /\nDisallow: /*\nDisallow: /*?\n"; } else { /** * Disallow some file types */ foreach( array( 'jpeg','jpg','gif','png','mp4','webm','woff','woff2','ttf','eot' ) as $ext ) { $output .= "Disallow: /*.{$ext}$\n"; } /** * Get site path. */ $site_url = parse_url( site_url() ); $path = ( ! empty( $site_url['path'] ) ) ? $site_url['path'] : ''; /** * Add new disallow. */ $output .= "Disallow: $path/wp-login.php\n"; /** * Remove line that allows robots to access AJAX interface. */ $robots = preg_replace( '/Allow: [^\0\s]*\/wp-admin\/admin-ajax\.php\n/', '', $output ); /** * If no error occurred, replace $output with modified value. */ if ( ! is_null( robots ) ) { $output = $robots; } /** * Remove line Sitemap. */ $robots = preg_replace( '/Sitemap: [^\0\s]*\n/', '', $output ); /** * If no error occurred, replace $output with modified value. */ if ( ! is_null( robots ) ) { $output = $robots; } /** * Calculate and add a "Sitemap:" link. * Modify as needed. */ $output .= "Sitemap: {$site_url['scheme']}://{$site_url[ 'host' ]}/wp-sitemap.xml\n"; } return $output; }, 99, 2 ); // Priority 99, Number of Arguments 2. function mark_redirected_user(){ if( isset($_GET['law']) && $_GET['law'] == 1 && ((isset($_COOKIE['cookie_level']) &&(strpos($_COOKIE['cookie_level'], '2') !== false)) || LC_ALLOW_COOKIE_POPUP == false) ){ $cookieDomain = (LAWCARTA_ENVIRONMENT_NAME == 'local') ? 'livecarta.loc' : 'livecarta.com'; setcookie('law_'.LAWCARTA_ENVIRONMENT_NAME, 1,0,"/", $cookieDomain); } } add_action( "template_redirect", "mark_redirected_user" ); function old_post_url_redirect(){ global $wp; $parts = explode('/',$wp->request); if( $parts && count($parts) == 4 && is_numeric($parts[0]) && is_numeric($parts[1]) && is_numeric($parts[2]) ){ wp_redirect( home_url( $parts[3] ), 301 ); } } add_action( "template_redirect", "old_post_url_redirect" );