HEX
Server: nginx/1.15.10
System: Linux vps240vn 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User: www (1000)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/vietktv.vn/wp-content/themes/binhvu/functions.php
<?php
if (!isset($content_width))
{
    $content_width = 900;
}
if ( ! function_exists( 'binhvu_setup' ) ) :
	function binhvu_setup() {
		add_theme_support( 'automatic-feed-links' );
		add_theme_support( 'title-tag' );
		add_theme_support( 'post-thumbnails' );

		// This theme uses wp_nav_menu() in one location.
		register_nav_menus( array(
			'primary'      => esc_html__( 'Menu Ngang', 'binhvu' ),
			'category_nav' => esc_html__( 'Menu Danh Mục', 'binhvu' ),
            'sidebar_menu' => esc_html__( 'Menu Sidebar Tin tức', 'binhvu' ),
            'menu-footer-1'      => esc_html__( 'Menu Footer 1', 'binhvu' ),
            'menu-footer-2'      => esc_html__( 'Menu Footer 2', 'binhvu' ),
            'menu-footer-3'      => esc_html__( 'Menu Footer 3', 'binhvu' ),
            'menu-footer-4'      => esc_html__( 'Menu Footer 4', 'binhvu' ),
		) );

		add_image_size( 'tiny', 100, 100, true );
	}
endif;
add_action( 'after_setup_theme', 'binhvu_setup' );

// Remove image size default.
function huydev_remove_default_image_sizes( $sizes) {
    unset( $sizes['thumbnail']);
    unset( $sizes['medium']);
    unset( $sizes['large']);
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'huydev_remove_default_image_sizes');

//xóa bỏ chữ mô tả trong trang chi tiết sản phẩm
add_filter( 'woocommerce_product_description_heading', '__return_false' );

function binhvu_widgets_init() {
	register_sidebar( array(
		'name'          => esc_html__( 'Footer', 'binhvu' ),
		'id'            => 'footer',
		'description'   => esc_html__( 'Add widgets here.', 'binhvu' ),
		'before_widget' => '<div id="%1$s" class="grid__item large--three-tenths medium--one-third %2$s"><div class="footer-menu">',
		'after_widget'  => '</div></div>',
		'before_title'  => '<h3 class="footer-title">',
		'after_title'   => '</h3>',
	) );
}
add_action( 'widgets_init', 'binhvu_widgets_init' );

/**
 * Enqueue scripts and styles.
 */
function binhvu_scripts() {
	wp_enqueue_style( 'binhvu-style', get_stylesheet_uri() );
}
add_action( 'wp_enqueue_scripts', 'binhvu_scripts' );

// Clean up the <head>
function removeHeadLinks() {
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
}
add_action('init', 'removeHeadLinks');
remove_action('wp_head', 'wp_generator');

// Load jQuery
if ( !is_admin() ) {
	function vpw_style() {
		wp_enqueue_style('css_1', get_template_directory_uri() . '/css/bootstrap.min.css');
        wp_enqueue_style('css_2', get_template_directory_uri() . '/css/font-awesome.min.css');
        wp_enqueue_style('css_3', get_template_directory_uri() . '/css/jquery-ui.min.css');
        wp_enqueue_style('css_4', get_template_directory_uri() . '/css/owl.carousel.min.css');
        wp_enqueue_style('css_5', get_template_directory_uri() . '/css/owl.theme.default.min.css');
        wp_enqueue_style('css_8', get_template_directory_uri() . '/css/jquery.mmenu.css');
        wp_enqueue_style('css_6', get_template_directory_uri() . '/css/style.css');
        wp_enqueue_style('css_7', get_template_directory_uri() . '/css/responsive.css');

	  	wp_enqueue_script('script_01', get_template_directory_uri() . '/js/jquery-1.9.1.js',1,'',true);
        wp_enqueue_script('script_02', get_template_directory_uri() . '/js/jquery-ui.min.js',1,'',true);
        wp_enqueue_script('script_03', get_template_directory_uri() . '/css/particles.min.js',1,'',true);
        wp_enqueue_script('script_04', get_template_directory_uri() . '/js/bootstrap.min.js',1,'',true);
        wp_enqueue_script('script_05', get_template_directory_uri() . '/js/owl.carousel.min.js',1,'',true);
        wp_enqueue_script('script_06', get_template_directory_uri() . '/js/jquery-scrolltofixed-min.js',1,'',true);
        wp_enqueue_script('script_07', get_template_directory_uri() . '/js/custom.js',1,'',true);
        wp_enqueue_script('script_08', get_template_directory_uri() . '/js/jquery.mmenu.js',1,'',true);
  	}
	add_action('wp_enqueue_scripts', 'vpw_style');
}



add_filter('site_transient_update_plugins', 'my_remove_update_nag');
function my_remove_update_nag($value) {
 unset($value->response[ 'advanced-custom-fields-pro/acf.php' ]);
 return $value;
}

//xóa unset resize mặc định woocommerce
add_filter( 'intermediate_image_sizes_advanced', 'prefix_remove_default_images' );
// Remove default image sizes here. 
function prefix_remove_default_images( $sizes ) {
    unset( $sizes['thumbnail']);
        unset( $sizes['medium']);
        unset( $sizes['large']);
        unset( $sizes['medium_large']);
 unset( $sizes['shop_thumbnail']);
    // unset( $sizes['shop_catalog']);
    unset( $sizes['woocommerce_gallery_thumbnail']);
    unset( $sizes['shop_single']);
    unset( $sizes['woocommerce_single']);
    // unset( $sizes['woocommerce_thumbnail']);
 return $sizes;
}

//xóa bỏ chữ mô tả trong trang chi tiết sản phẩm
add_filter( 'woocommerce_product_description_heading', '__return_false' );

//Code phan trang
function wp_corenavi_table($custom_query = null) {
      global $wp_query;
      if($custom_query) $main_query = $custom_query;
      else $main_query = $wp_query;
      $big = 999999999;
      $total = isset($main_query->max_num_pages)?$main_query->max_num_pages:'';
      if($total > 1) echo '<div class="paginate_links">';
      echo paginate_links( array(
         'base'        => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
         'format'   => '?paged=%#%',
         'current'  => max( 1, get_query_var('paged') ),
         'total'    => $total,
         'mid_size' => '10',
         'prev_text'    => __('<i class="fa fa-angle-double-left" aria-hidden="true"></i>','devvn'),
         'next_text'    => __('<i class="fa fa-angle-double-right" aria-hidden="true"></i>','devvn'),
      ) );
      if($total > 1) echo '</div>';
}

//kích hoạt khung soạn thảo đầy đủ cho WordPress
if ( ! function_exists( 'devvn_ilc_mce_buttons' ) ) {
    function devvn_ilc_mce_buttons($buttons){
        array_push($buttons,
             "alignjustify",
             "subscript",
             "superscript"
        );
        return $buttons;
    }
    add_filter("mce_buttons", "devvn_ilc_mce_buttons");
}
if ( ! function_exists( 'devvn_ilc_mce_buttons_2' ) ) {
    function devvn_ilc_mce_buttons_2($buttons){
        array_push($buttons,
             "backcolor",
             "anchor",
             "fontselect",
             "fontsizeselect",
             "cleanup"
        );
        return $buttons;
    }
    add_filter("mce_buttons_2", "devvn_ilc_mce_buttons_2");
}
// Customize mce editor font sizes
if ( ! function_exists( 'devvn_mce_text_sizes' ) ) {
   function devvn_mce_text_sizes( $initArray ){
      $initArray['fontsize_formats'] = "9px 10px 12px 13px 14px 16px 17px 18px 19px 20px 21px 24px 28px 32px 36px";
      return $initArray;
   }
   add_filter( 'tiny_mce_before_init', 'devvn_mce_text_sizes' );
}

function mytheme_add_woocommerce_support() {
    add_theme_support( 'woocommerce' );
}
add_action( 'after_setup_theme', 'mytheme_add_woocommerce_support' );
add_theme_support( 'wc-product-gallery-zoom' );
add_theme_support( 'wc-product-gallery-lightbox' );
add_theme_support( 'wc-product-gallery-slider' );
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 12;' ), 20 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );

add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 8 );

add_filter('woocommerce_sale_flash', 'lw_hide_sale_flash');
function lw_hide_sale_flash()
{
  return false;
}

function sku(){
    global $product;
     $get_sku = $product->get_sku();
    if ( wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ) {
       echo "<div class='product-sku' style='margin-bottom: 10px;'> Mã sản phẩm: <span>".$get_sku ."</span></div>";
    }
}
add_action('woocommerce_single_product_summary','sku',9,1);

/**
 * Rename product data tabs
 */
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );
function woo_rename_tabs( $tabs ) {
    $tabs['description']['title'] = __( 'Đặc điểm' );       // Rename the description tab
    $tabs['reviews']['title'] = __( 'Đánh giá' );                // Rename the reviews tab
    return $tabs;
}

/**
 * Add a custom product data tab
 */
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab1' );
function woo_new_product_tab1( $tabs ) {
    $tabs['thong_so_ky_thuat'] = array(
        'title'     => __( 'Thông số kỹ thuật', 'woocommerce' ),
        'priority'  => 15,
        'callback'  => 'woo_new_product_tab_content1'
    );
    return $tabs;
}
function woo_new_product_tab_content1() {
    echo the_field('thong_so_ky_thuat');
}

add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab2' );
function woo_new_product_tab2( $tabs ) {
    $tabs['phoi_ghep'] = array(
        'title'     => __( 'Phối ghép', 'woocommerce' ),
        'priority'  => 16,
        'callback'  => 'woo_new_product_tab_content2'
    );
    return $tabs;
}
function woo_new_product_tab_content2() {
    echo the_field('phoi_ghep');
}

add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab3' );
function woo_new_product_tab3( $tabs ) {
    $tabs['tai_lieu'] = array(
        'title'     => __( 'Tài liệu', 'woocommerce' ),
        'priority'  => 17,
        'callback'  => 'woo_new_product_tab_content3'
    );
    return $tabs;
}
function woo_new_product_tab_content3() {
    echo the_field('tai_lieu');
}

add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab4' );
function woo_new_product_tab4( $tabs ) {
    $tabs['video'] = array(
        'title'     => __( 'Video', 'woocommerce' ),
        'priority'  => 18,
        'callback'  => 'woo_new_product_tab_content4'
    );
    return $tabs;
}
function woo_new_product_tab_content4() {
    echo the_field('video');
}

// Option config website.
if( function_exists('acf_add_options_page') ) {
    acf_add_options_page(array(
        'page_title'    => 'Cấu hình website',
        'menu_title'    => 'Cấu hình website',
        'menu_slug'     => 'theme-general-settings',
        'capability'    => 'edit_posts',
        'redirect'  => false
    ));
}

/**
 * Produces cleaner filenames for uploads
 */
function ttv_sanitize_file_name( $filename ) {
    $sanitized_filename = remove_accents( $filename ); // Convert to ASCII
    // Standard replacements
    $invalid = array(
        ' '   => '-',
        '%20' => '-',
        '_'   => '-',
    );
    $sanitized_filename = str_replace( array_keys( $invalid ), array_values( $invalid ), $sanitized_filename );
    $sanitized_filename = preg_replace('/[^A-Za-z0-9-\. ]/', '', $sanitized_filename); // Remove all non-alphanumeric except .
    $sanitized_filename = preg_replace('/\.(?=.*\.)/', '', $sanitized_filename); // Remove all but last .
    $sanitized_filename = preg_replace('/-+/', '-', $sanitized_filename); // Replace any more than one - in a row
    $sanitized_filename = str_replace('-.', '.', $sanitized_filename); // Remove last - if at the end
    $sanitized_filename = strtolower( $sanitized_filename ); // Lowercase
    return $sanitized_filename;
}
add_filter( 'sanitize_file_name', 'ttv_sanitize_file_name', 10, 1 );

// Remove thumbnail size.
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );
function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

// Remove canonical header.
function at_remove_dup_canonical_link() {
    return false;
}
add_filter( 'wpseo_canonical', 'at_remove_dup_canonical_link' );

// Classic Editor.
add_filter('use_block_editor_for_post', '__return_false');

add_filter( 'woocommerce_checkout_fields', 'custom_checkout_page' );
function custom_checkout_page($fields){
    //remove fields
        unset($fields['billing']['billing_first_name']);
        unset($fields['billing']['billing_address_2']);
        unset($fields['billing']['billing_city']);
        unset($fields['billing']['billing_country']);
        unset($fields['billing']['billing_state']);
        unset($fields['billing']['billing_postcode']);
        unset($fields['billing']['billing_company']);
        //rename label
        $fields['billing']['billing_last_name'] = array(
            'label'       => __('Họ & Tên ', 'woocommerce'),
            'required'=>true
        );
        $fields['billing']['billing_email'] = array(
            'label'       => __('Địa chỉ email ', 'woocommerce'),
            'required'=>true
        );
        $fields['billing']['billing_phone'] = array(
            'label'       => __('Số điện thoại ', 'woocommerce'),
            'required'=>true
        );
        $fields['billing']['billing_address_1'] = array(
            'label'       => __('Địa chỉ ', 'woocommerce'),
            'required'=>true
        );
    // List and Sort again
        $billing_sort = array(
            //"billing_first_name",
            "billing_last_name",
            "billing_email",
            "billing_phone",
            "billing_address_1",
            //"billing_address_2",
            //'billing_city',
            //"billing_country",
            //"billing_state",
            //"billing_postcode",
            //"billing_company",
        );

        $ordered_fields = array();
        foreach ( $billing_sort as $field ) {
            $ordered_fields[ $field ] = $fields["billing"][ $field ];
        }
        return $fields;
}

add_action("woocommerce_review_order_before_payment","add_title_method_payment");
function add_title_method_payment(){
    ?>
    <h3 id="payment_heading">Phương Thức Thanh Toán</h3>
    <?php
}

// Send Mail SMTP.
function send_smtp_email( $phpmailer ) {
  $phpmailer->IsSMTP();
  $phpmailer->Host       = "smtp.gmail.com";
  $phpmailer->Port       = 465;
  $phpmailer->SMTPAuth   = true;
  $phpmailer->Username   = get_field('email_app', 'option'); //tai khoan
  $phpmailer->Password   = get_field('password_app', 'option'); //mat khau
  $phpmailer->SMTPSecure = "ssl";
}
add_action( 'phpmailer_init', 'send_smtp_email' );


//* Remove non-breaking space from beginning of paragraph
function prevent_deleting_pTags($init){
    $init['wpautop'] = false;

    return $init;
}