Viewing File: /home/maglabs/sfakstar/wp-content/themes/kariez/inc/Custom/Extras.php
<?php
namespace RT\Kariez\Custom;
use RT\Kariez\Traits\SingletonTraits;
use RT\Kariez\Options\Opt;
/**
* Extras.
*/
class Extras {
use SingletonTraits;
/**
* register default hooks and actions for WordPress
* @return
*/
public function __construct() {
add_filter( 'body_class', [ $this, 'body_class' ] );
add_action( 'wp_nav_menu_item_custom_fields', [ $this, 'menu_customize' ], 10, 2 );
add_action( 'wp_update_nav_menu_item', [ $this, 'menu_update' ], 10, 2 );
add_filter( 'wp_get_nav_menu_items', [ $this, 'menu_modify' ], 11, 3 );
add_action( 'after_switch_theme', [ $this, 'rewrite_flush' ] );
add_action( 'pre_get_posts', [ $this, 'kariez_custom_pagesize' ],1 );
add_action( 'wp_head', [ $this, 'insert_social_in_head' ] );
add_action( 'template_redirect', [ $this, 'w3c_validator' ] );
}
/*
* Body Class added
*/
public function body_class( $classes ) {
// Adds a class of group-blog to blogs with more than 1 published author.
$classes[] = 'kariez-header-' . Opt::$header_style;
$classes[] = 'kariez-footer-' . Opt::$footer_style;
if ( is_multi_author() ) {
$classes[] = 'group-blog';
}
// Adds a class of hfeed to non-singular pages.
if ( ! is_singular() ) {
$classes[] = 'hfeed';
}
if ( Opt::$has_tr_header ) {
$classes[] = 'has-trheader';
} else {
$classes[] = 'no-trheader';
}
if ( Opt::$has_tr_header && !empty( Opt::$header_tr_color ) ) {
$classes[] = Opt::$header_tr_color;
}
if ( kariez_option( 'rt_tr_header_shadow' ) ) {
$classes[] = 'has-menu-shadow';
}
if ( Opt::$has_banner ) {
$classes[] = 'has-banner';
} else {
$classes[] = 'no-banner';
}
if ( Opt::$has_top_bar ) {
$classes[] = 'has-top-bar';
} else {
$classes[] = 'no-top-bar';
}
if ( Opt::$layout ) {
$classes[] = 'layout-' . Opt::$layout;
}
if ( kariez_option( 'rt_sticy_header' ) ) {
$classes[] = 'has-sticky-header';
}
if ( kariez_option( 'rt_sticky_footer' ) ) {
$classes[] = 'has-sticky-footer';
}
if ( kariez_option( 'rt_blend' ) ) {
$classes[] = 'rt-blend';
}
// if ( kariez_option( 'rt_page' ) ) {
// $classes[] = 'page';
// }
if ( kariez_option( 'rt_remove_admin_bar' ) ) {
$classes[] = 'remove-admin-bar';
}
if ( is_single() && Opt::$single_style ) {
$classes[] = 'kariez-single-' . Opt::$single_style;
}
return $classes;
}
/*custom team archive */
function kariez_custom_pagesize( $query ) {
if( is_admin() || ! $query->is_main_query() ){
return;
}
if ( is_post_type_archive( 'rt-team' ) || is_tax( "rt-team-department" ) ) {
$team_post_number = kariez_option( 'rt_team_item_number' );
$query->set( 'posts_per_page', $team_post_number );
return;
}
if ( is_post_type_archive( 'rt-service' ) || is_tax( "rt-service-category" ) ) {
$service_post_number = kariez_option( 'rt_service_item_number' );
$query->set( 'posts_per_page', $service_post_number );
return;
}
if ( is_post_type_archive( 'rt-project' ) || is_tax( "rt-project-category" ) ) {
$project_post_number = kariez_option( 'rt_project_item_number' );
$query->set( 'posts_per_page', $project_post_number );
return;
}
}
/*
* Menu Customize
*/
function menu_customize( $item_id, $item ) {
// Mega menu
$_mega_menu = get_post_meta( $item_id, 'kariez_mega_menu', true );
// Query string
$menu_query_string = get_post_meta( $item_id, 'kariez_menu_qs', true );
?>
<?php if ( $item->menu_item_parent < 1 ) : ?>
<p class="description mega-menu-wrapper widefat">
<label for="kariez_mega_menu-<?php echo esc_attr($item_id); ?>" class="widefat">
<?php _e( 'Make as Mega Menu', 'kariez' ); ?><br>
<select class="widefat" id="kariez_mega_menu-<?php echo esc_attr($item_id); ?>" name="kariez_mega_menu[<?php echo esc_attr($item_id); ?>]">
<option value=""><?php _e( 'Choose Mega Menu', 'kariez' ); ?></option>
<?php
for ( $item = 2; $item < 12; $item++ ) {
$menu_item = $item;
$class_hide = null;
$label_hide = '';
if ( $item > 6 ) {
$menu_item -= 5;
$class_hide = ' hide-header';
$label_hide = ' — Hide Col Title';
}
$class = "mega-menu mega-menu-col-{$menu_item}" . $class_hide ?? '';
$selected = ( $_mega_menu == $class ) ? ' selected="selected" ' : null;
?>
<option <?php echo esc_attr( $selected ); ?> value="<?php echo esc_attr( $class ); ?>">
<?php printf( __( 'Mega menu - %1$s Col %2$s', 'kariez' ), $menu_item, $label_hide ); ?>
</option>
<?php
}
?>
</select>
</label>
</p>
<?php endif; ?>
<p class="description widefat">
<label class="widefat" for="kariez-menu-qs-<?php echo esc_attr($item_id); ?>">
<?php echo esc_html__( 'Query String', 'kariez' ); ?><br>
<input type="text"
class="widefat"
id="kariez-menu-qs-<?php echo esc_attr($item_id); ?>"
name="kariez-menu-qs[<?php echo esc_attr($item_id); ?>]"
value="<?php echo esc_html( $menu_query_string ); ?>"
/>
</label>
</p>
<?php
}
/**
* Menu Update
*
* @param $menu_id
* @param $menu_item_db_id
*
* @return void
*/
function menu_update( $menu_id, $menu_item_db_id ) {
$_mega_menu = $_POST['kariez_mega_menu'][ $menu_item_db_id ] ?? '';
$query_string_value = $_POST['kariez-menu-qs'][ $menu_item_db_id ] ?? '';
update_post_meta( $menu_item_db_id, 'kariez_mega_menu', $_mega_menu );
update_post_meta( $menu_item_db_id, 'kariez_menu_qs', $query_string_value );
}
/**
* Modify Menu item
*
* @param $items
* @param $menu
* @param $args
*
* @return mixed
*/
function menu_modify( $items, $menu, $args ) {
foreach ( $items as $item ) {
$menu_query_string = get_post_meta( $item->ID, 'kariez_menu_qs', true );
if ( $menu_query_string ) {
$item->url = add_query_arg( $menu_query_string, '', $item->url );
}
}
return $items;
}
/**
* Search form modify
*
* @return string
*/
public function search_form() {
$output = '
<form method="get" class="kariez-search-form" action="' . esc_url( home_url( '/' ) ) . '">
<div class="search-box">
<input type="text" class="form-control" placeholder="' . esc_attr__( 'Type your search', 'kariez' ) . '" value="' . get_search_query() . '" name="s" />
<button class="item-btn" type="submit">
' . kariez_get_svg( 'search', false ) . '
<span class="btn-label">' . esc_html__( 'Search', 'kariez' ) . '</span>
</button>
</div>
</form>
';
return $output;
}
/**
* Flush Rewrite on CPT activation
*
* @return empty
*/
public function rewrite_flush() {
// Flush the rewrite rules only on theme activation
flush_rewrite_rules();
}
public function insert_social_in_head() {
global $post;
if ( ! isset( $post ) ) {
return;
}
$title = get_the_title();
if ( is_singular('post') ) {
$link = get_the_permalink() . '?v='.time();
echo '<meta property="og:url" content="' . $link . '" />';
echo '<meta property="og:type" content="article" />';
echo '<meta property="og:title" content="' . $title . '" />';
if ( ! empty( $post->post_content ) ) {
echo '<meta property="og:description" content="' . wp_trim_words( $post->post_content,
150 ) . '" />';
}
$attachment_id = get_post_thumbnail_id( $post->ID );
if ( ! empty( $attachment_id ) ) {
$thumbnail = wp_get_attachment_image_src( $attachment_id, 'full' );
if ( ! empty( $thumbnail ) ) {
$attachment = get_post($attachment_id);
$thumbnail[0] .= '?v='.time();
echo '<meta property="og:image" content="' . $thumbnail[0] . '" />';
echo '<link itemprop="thumbnailUrl" href="' . $thumbnail[0] . '">';
echo '<meta property="og:image:type" content="'.$attachment->post_mime_type.'">';
}
}
echo '<meta property="og:site_name" content="' . get_bloginfo( 'name' ) . '" />';
echo '<meta name="twitter:card" content="summary" />';
echo '<meta property="og:updated_time" content="'.time().'" />';
}
}
//W3C validator passing code
public function w3c_validator() {
ob_start( function( $buffer ){
$buffer = str_replace( array( '<script type="text/javascript">', "<script type='text/javascript'>" ), '<script>', $buffer );
return $buffer;
});
ob_start( function( $buffer2 ){
$buffer2 = str_replace( array( "<script type='text/javascript' src" ), '<script src', $buffer2 );
return $buffer2;
});
ob_start( function( $buffer3 ){
$buffer3 = str_replace( array( 'type="text/css"', "type='text/css'", 'type="text/css"', ), '', $buffer3 );
return $buffer3;
});
ob_start( function( $buffer4 ){
$buffer4 = str_replace( array( '<iframe frameborder="0" scrolling="no" marginheight="0" marginwidth="0"', ), '<iframe', $buffer4 );
return $buffer4;
});
ob_start( function( $buffer5 ){
$buffer5 = str_replace( array( 'aria-required="true"', ), '', $buffer5 );
return $buffer5;
});
}
}
Back to Directory
File Manager