Các function hay dùng trong file function.php trong thiết kế theme wordpress

Tổng hợp những Functions Wordpress hay dùng trong thiết kế thêm wordpress được sưu tầm từ nhiều nguồn - Post type, Widget, Menu, Theme …...

Các function hay dùng trong file function.php trong thiết kế theme wordpress
5 (100%) 3 votes
Các function hay dùng trong file function.php trong thiết kế theme wordpress

Các function hay sử dụng trong file function.php trong thiết kế theme wordpress

Tất cả các code dưới đây đều được thêm vào trong file function.php

Remove Parent Slug From Child Page URL – Xóa Slug cha trên Page con
add_filter( 'page_link', 'sv_remove_parent_page_from_link', 10, 3 );
function sv_remove_parent_page_from_link( $permalink, $post, $sample)
{
    $parrent_id = wp_get_post_parent_id($post);
    if ($parrent_id) {
        $post_parent = get_post($parrent_id); 
        $slug_parent = '/'.$post_parent->post_name;
        $permalink = str_replace( $slug_parent, '', $permalink );
         
    }
    return $permalink;
    flush_rewrite_rules();
}

[collapse]

Lấy danh sách Taxonomy của một Post Type

<?php
// Tạo function lấy danh sách Taxonomy
function sv_taxonomylist(){
    $post_type = 'pagebai';
    $taxonomies = get_object_taxonomies( (object) array( 'post_type' => $post_type ) );
    foreach( $taxonomies as $taxonomy ){
        $terms = get_terms( $taxonomy );
        foreach( $terms as $term ){ ?>
            <a href="<?php echo get_term_link($term->term_id) ?>"><?php echo $term->name; ?></a>
        <?php }
    }
}
// hiển thị các Taxonomy:
sv_taxonomylist();
?>

[collapse]

Ẩn tab attribute cho product type Woocommerce

<?php
function hide_attributess_for_mobile_booking_data_panel( $tabs ) {
$tabs[ 'general' ][ 'class' ][] = 'hide_if_mobile-booking';
$tabs[ 'inventory' ][ 'class' ][] = 'hide_if_mobile-booking';
$tabs[ 'shipping' ][ 'class' ][] = 'hide_if_mobile-booking';
$tabs[ 'linked_product' ][ 'class' ][] = 'hide_if_mobile-booking';
$tabs[ 'variations' ][ 'class' ][] = 'hide_if_mobile-booking';
$tabs[ 'advanced' ][ 'class' ][] = 'hide_if_mobile-booking';
$tabs[ 'attribute' ][ 'class' ][] = 'hide_if_mobile-booking';
return $tabs;
}
 
add_filter( 'woocommerce_product_data_tabs', 'hide_attributess_for_mobile_booking_data_panel', 10, 1);
?>

[collapse]

Nén code tăng tốc độ load trang

<?php
function sanitize_output($buffer)
{
$search = array(
'/>[^S ]+/s',
'/[^S ]+</s',
'/(s)+/s'
);
$replace = array(
'>',
'<',
'\1'
);
$buffer = preg_replace($search, $replace, $buffer);
return $buffer;
}
ob_start("sanitize_output");
?>

[collapse]

Tạo icon cho post type admin trong wordpress

function sv_icon_post_type(){
?>
<style>
#adminmenu .menu-icon-tour div.wp-menu-image:before {
content: "f322";
}
</style>
<?php
}
add_action( 'admin_head', 'sv_icon_post_type' );

Trong đó:

+ tour: tên post type
+ content: “f322” : là mã icon

Có thể tham khảo các icon ở trang: https://developer.wordpress.org/resource/dashicons/#nametag

[collapse]

Chức năng lọc taxonomy trong wordpress

$arg_fillter = array(
'post_type' => 'tour',
'posts_per_page' => -1,
'diadiem_Cat' => 'ha-noi',
'loai_hinh_du_lich' => 'team-buildding',
);

Trong đó:

+ diadiem_Cat : tên taxonomy A
+ loai_hinh_du_lich : tên taxonomy B
+ ha-noi: slug term trong taxonomy A
+ team_build_ding: slug term trong taxonomy B

Và ta truy vấn bình thường để có dữ liệu trong vòng while loop post

[collapse]

Đếm số bài viết theo thành viên WordPress

$id_svuser = "ID_Cua_Thanh_Vien";
// Đếm bài viết với Post type là Post
count_user_posts($id_svuser,'post');
 
// Đếm bài viết với Post_type là Custom_post_type
count_user_posts($id_svuser,'post_type_cua_ban');

[collapse]

Thêm nhóm thành viên cho WordPress

// Thêm nhóm thành viên Vip, đặt level nhóm là 3.
$sv_new_user = add_role('vipuser', __( 'Vip User' ),
    array(
        'upload_files'         => true,
        'edit_others_pages'         => true,
        'edit_posts'         => true,
        'publish_posts'         => true,
        'read'         => true,
        'level_3' => true,
    )
);

[collapse]

Đếm số bình luận của bài viết theo các trạng thái

// Lấy thông tin comment theo bài
$comments_count = wp_count_comments(get_the_ID());
 
// hiển thị tổng bình luận
echo $comments_count->total_comments;
 
// bình luận đã được duyệt
echo $comments_count->approved;
 
// Bình luận được kiểm duyệt
echo $comments_count->moderated;
 
// Bình luận spam
echo $comments_count->spam;
 
// Bình luận đã xóa
echo $comments_count->trash;

[collapse]

Đếm số thành viên trên website WordPress

// Tổng số thành viên
$sv_user = count_users();
echo $sv_user['total_users'];
 
// Số thành viên trong nhóm user
$sv_cgroup = count( get_users( array('fields' => array('ID'), 'role' => 'author')));
// Thay author bằng các nhóm: administrator, editor, contributor, subscriber.

[collapse]

Đếm số từ trong nội dung bài viết WordPress

Thêm đoạn code bên dưới vào file Functions.php:

function post_word_count() {
global $post;
    $words = str_word_count( strip_tags( get_post_field( 'post_content', get_the_ID() ) ) );
    $time = $words/250;
    if ( $time < 1) {
        echo 1;
    } else {
        echo round($time, 1, PHP_ROUND_HALF_UP);
    }
}

Bạn vào file single.php trong theme và hiển thị số từ của bài viết bằng đoạn code này:

<?php echo post_word_count(); ?>

[collapse]
Tắt chức năng chia sẻ Rest API trong WordPress

add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');

[collapse]

Thêm class vào thẻ P đầu tiên trong bài viết WordPress

function sv_p_first( $content ) {
    return preg_replace( '/<p([^>]+)?>/', '<p$1 class="sv_class">', $content, 1 );
}
add_filter( 'the_content', 'sv_p_first' );

[collapse]

Tạo Custom post type nhanh cho WordPress

function create_custom_post() {
    register_post_type( 'custom-post',
    array(
    'labels' => array(
        'name' => __( 'Custom Post' ),
    ),
    'public' => true,
    'hierarchical' => true, 
    'has_archive' => true,
    'supports' => array(
        'title',
        'editor',
        'excerpt',
        'thumbnail'
    ), 
    'can_export' => true,
    'taxonomies' => array(
            'post_tag',
            'category'
    )
));
}
add_action('init', 'create_custom_post');

[collapse]

Hiển thị page trong kết quả tìm kiếm

function sv_them_pages_from_search() {
    global $wp_post_types;
    $wp_post_types['page']->exclude_from_search = true;
}
add_action( 'init', 'sv_them_pages_from_search' );

[collapse]

Thay đổi độ dài của mô tả bài viết trong WordPress

function custom_excerpt_length( $length ) {
    return 30;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

[collapse]

Thay logo mặc định trong trang Login wordpress

function custom_login_logo() {
echo '<style>.login h1 a { background-image: url(link_image.jpg) !important; background-size: 234px 67px; width:234px; height:67px; display:block; }</style>';
}
add_action( 'login_head', 'custom_login_logo' );

[collapse]

Chỉ cho Admin vào trang quản trị wp-admin

function sv_redirect(){
$svcheck = get_current_user_id();
if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('editor') || current_user_can('author') || current_user_can('subscriber') || current_user_can('contributor') ) ){
    wp_redirect( home_url() );
    exit;
  }
}
add_action('init','sv_redirect');

[collapse]

Thêm trường tùy biến cho hồ sơ thành viên wordpress

function sv_add_fields_user($profile_fields){
$profile_fields['googleplus'] = 'Google+';
$profile_fields['twitter'] = 'Twitter username';
$profile_fields['facebook'] = 'Facebook profile URL';
return $profile_fields;
}
add_filter('user_contactmethods', 'sv_add_fields_user');

[collapse]

Bỏ các thông báo update của WordPress

// Tắt thông báo update wordpress phiên bản mới
add_action( 'after_setup_theme', function () {
  add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
  add_filter( 'pre_option_update_core', '__return_null' );
  add_filter( 'pre_site_transient_update_core', '__return_null' );
}, 1 );
 
// Tắt thông báo update Plugin
remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', '__return_null' );
 
 
// Tắt thông báo update các plugin đang bật
add_filter( 'transient_update_plugins', function ( $value = '' ) {
  if ( ( isset( $value->response ) ) && ( count( $value->response ) ) ) {
    $active_plugins = get_option( 'active_plugins' );
    if ( $active_plugins ) {
      foreach( $value->response as $plugin_idx => $plugin_item ) {
        if ( ! in_array( $plugin_idx, $active_plugins ) ) {
          unset( $value->response[$plugin_idx] );
        }
      }
    } else {
      foreach( $value->response as $plugin_idx => $plugin_item ) {
        unset( $value->response );
      }
    }
  }
  return $value;
});

[collapse]

Bỏ Javascript mặc định wordpress tạo ra trên theme

add_action( 'wp_enqueue_scripts', function () {
   wp_deregister_script( 'jquery' );
   wp_deregister_script( 'wp-embed' );
});

[collapse]

Bỏ kích thước ảnh mặc định trong WordPress

function remove_df_media_sv( $sizes) {
    unset( $sizes['thumbnail']);
    unset( $sizes['medium']);
    unset( $sizes['large']);
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_df_media_sv');

[collapse]

Bỏ các thẻ trên Header website được WordPress tự động sinh ra

add_action( 'init', function () {
 // Bỏ RSD link (Really Simple Discovery)
  remove_action( 'wp_head', 'rsd_link' );
 // Bỏ Wlwmanifest link (Windows Live Writer manifest)
  remove_action( 'wp_head', 'wlwmanifest_link' );
 // Bỏ feeds
  remove_action( 'wp_head', 'feed_links', 2 );
 // Bỏ extra feeds, such as category feeds
  remove_action( 'wp_head','feed_links_extra', 3 );
 // Bỏ displayed XHTML generator
  remove_action( 'wp_head', 'wp_generator' );
 // Bỏ REST API link tag
  remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
  // Bỏ oEmbed discovery links.
  remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
  // Bỏ rel next/prev links
  remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
});

[collapse]

Xóa các Tab hỗ trợ trong Dashboard WordPress

add_filter( 'contextual_help', function ( $old_help, $screen_id, $screen ) {
  // Bỏ tất cả Tab trợ giúp
  $screen->remove_help_tabs();
   
  // Tùy chọn bỏ Tab trợ giúp
  $screen->remove_help_tab( 'overview' );
  $screen->remove_help_tab( 'help-navigation' );
  $screen->remove_help_tab( 'help-layout' );
  $screen->remove_help_tab( 'help-content' );
  $screen->remove_help_tab( 'attachment-details' );
  $screen->remove_help_tab( 'managing-pages' );
  $screen->remove_help_tab( 'managing-pages' );
  $screen->remove_help_tab( 'moderating-comments' );
  $screen->remove_help_tab( 'adding-themes' );
  $screen->remove_help_tab( 'customize-preview-themes' );
  $screen->remove_help_tab( 'compatibility-problems' );
  $screen->remove_help_tab( 'adding-plugins' );
  $screen->remove_help_tab( 'screen-display' );
  $screen->remove_help_tab( 'actions' );
  $screen->remove_help_tab( 'user-roles' );
  $screen->remove_help_tab( 'press-this' );
  $screen->remove_help_tab( 'converter' );
  $screen->remove_help_tab( 'options-postemail' );
  $screen->remove_help_tab( 'options-services' );
  $screen->remove_help_tab( 'site-visibility' );
  $screen->remove_help_tab( 'permalink-settings' );
  $screen->remove_help_tab( 'custom-structures' );
}, 999, 3);

[collapse]

Xóa nội dung chân trang trang quản trị WordPress

// Bỏ text Trái
add_filter( 'admin_footer_text', function () {
  return '';
}, 999);
 
// Bỏ text Phải
add_filter( 'update_footer', function () {
 return '';
}, 999);

[collapse]

Bỏ menu không cần thiết trong trang quản trị WordPress

add_action( 'admin_menu', function () {
  // Bỏ Dashboard
  remove_menu_page( 'index.php' );
  // Bỏ Posts
  remove_menu_page( 'edit.php' );
  // Bỏ Posts -> Categories
  remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );
  // Bỏ Posts -> Tags
  remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
  // Bỏ Media
  remove_menu_page( 'upload.php' );
  // Bỏ Media -> Library
  remove_submenu_page( 'upload.php', 'upload.php' );
  // Bỏ Media -> Add new media
  remove_submenu_page( 'upload.php', 'media-new.php' );
  // Bỏ Pages
  remove_menu_page( 'edit.php?post_type=page' );
  // Bỏ Pages -> All pages
  remove_submenu_page( 'edit.php?post_type=page', 'edit.php?post_type=page' );
  // Bỏ Pages -> Add new page
  remove_submenu_page( 'edit.php?post_type=page', 'post-new.php?post_type=page' );
  // Bỏ Comments
  remove_menu_page( 'edit-comments.php' );
  // Bỏ Appearance
  remove_menu_page( 'themes.php' );
  // Bỏ Appearance -> Themes
  remove_submenu_page( 'themes.php', 'themes.php' );
  // Bỏ Appearance -> Customize
  remove_submenu_page( 'themes.php', 'customize.php?return=' . urlencode( $_SERVER['REQUEST_URI'] ) );
  // Bỏ Appearance -> Widgets
  remove_submenu_page( 'themes.php', 'widgets.php' );
  // Bỏ Appearance -> Menus
  remove_submenu_page( 'themes.php', 'nav-menus.php.php' );
  // Bỏ Appearance -> Editor
  remove_submenu_page( 'themes.php', 'theme-editor.php' );
  // Bỏ Plugins
  remove_menu_page( 'plugins.php' );
  // Bỏ Plugins -> Installed plugins
  remove_submenu_page( 'plugins.php', 'plugins.php' );
  // Bỏ Plugins -> Add new plugins
  remove_submenu_page( 'plugins.php', 'plugin-install.php' );
  // Bỏ Plugins -> Plugin editor
  remove_submenu_page( 'plugins.php', 'plugin-editor.php' );
  // Bỏ Users
  remove_menu_page( 'users.php' );
  // Bỏ Users -> Users
  remove_submenu_page( 'users.php', 'users.php' );
  // Bỏ Users -> New user
  remove_submenu_page( 'users.php', 'user-new.php' );
  // Bỏ Users -> Your profile
  remove_submenu_page( 'users.php', 'profile.php' );
  // Bỏ Tools
  remove_menu_page( 'tools.php' );
  // Bỏ Tools -> Available Tools
  remove_submenu_page( 'tools.php', 'tools.php' );
  // Bỏ Tools -> Import
  remove_submenu_page( 'tools.php', 'import.php' );
  // Bỏ Tools -> Export
  remove_submenu_page( 'tools.php', 'export.php' );
  // Bỏ Settings
  remove_menu_page( 'options-general.php' );
  // Bỏ Settings -> Writing
  remove_submenu_page( 'options-general.php', 'options-writing.php' );
  // Bỏ Settings -> Reading
  remove_submenu_page( 'options-general.php', 'options-reading.php' );
  // Bỏ Settings -> Discussion
  remove_submenu_page( 'options-general.php', 'options-discussion.php' );
  // Bỏ Settings -> Media
  remove_submenu_page( 'options-general.php', 'options-media.php' );
  // Bỏ Settings -> Permalinks
  remove_submenu_page( 'options-general.php', 'options-permalink.php' );
}, 999);

[collapse]

Xóa trường mặc định trong khung bình luận wordpress

function sv_disable_comment_fields( $fields ) {
  unset( $fields['email'] ); // xóa trường Email
  unset( $fields['author'] ); // xóa trường Tên
  unset( $fields['url'] ); // xóa trường Website
  return $fields;
}
add_filter( 'comment_form_default_fields', 'sv_disable_comment_fields' );

[collapse]

Bỏ chức năng Emojis (biểu tượng cảm xúc) trên wordpress

add_action( 'init', function () {
  remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
  remove_action( 'wp_print_styles', 'print_emoji_styles' );
  remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
  remove_action( 'admin_print_styles', 'print_emoji_styles' );
  remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
  remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
  remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
  add_filter( 'emoji_svg_url', '__return_false' );
  // Tìm gỡ TinyMCE emojis
  add_filter( 'tiny_mce_plugins', function ( $plugins ) {
    if ( is_array( $plugins ) ) {
      return array_diff( $plugins, array( 'wpemoji' ) );
    }
    return array();
  });
});

[collapse]

Ẩn các link trên thanh Admin Bar WordPress

add_action( 'admin_bar_menu', function ( $admin_bar ) {
    $admin_bar->remove_menu( 'wp-logo' );            // Ẩn WordPress logo
    $admin_bar->remove_menu( 'about' );            // Ẩn about WordPress link
    $admin_bar->remove_menu( 'documentation' );    // Ẩn WordPress documentation link
    $admin_bar->remove_menu( 'support-forums' );   // Ẩn support forums link
    $admin_bar->remove_menu( 'feedback' );         // Ẩn feedback link
    $admin_bar->remove_menu( 'site-name' );          // Ẩn site name menu
    $admin_bar->remove_menu( 'view-site' );        // Ẩn view site link
    $admin_bar->remove_menu( 'updates' );            // Ẩn updates link
    $admin_bar->remove_menu( 'comments' );           // Ẩn comments link
    $admin_bar->remove_menu( 'new-content' );        // Ẩn content link
    $admin_bar->remove_menu( 'my-account' );         // Ẩn user details tab
}, 999);

[collapse]

Xóa Admin Bar wordpress ngoài trang chủ

add_filter( 'show_admin_bar', '__return_false' );

[collapse]

Ngoài ra các bạn có thể xem thêm bài viết:

    Tổng hợp những đoạn code cần ghi nhớ khi thiết kế theme cho wordpress
    Tổng hợp các hàm cơ bản cần nhớ khi lập trình theme cho wordpress

Link tham khảo: https://codex.wordpress.org/

Chia sẻ bài viết:

Bài liên quan

avatar
  Subscribe  
Notify of

About

Xin chào các bạn! Tôi là một người yêu thích viết Blog . Hiện tại, tôi có một công việc ban ngày với tư cách là một chuyên viên bơm vá săm xe các loại, và trang web này là một trong những hoạt động yêu thích của tôi, đặc biệt là trong những lúc rảnh rỗi. Hy vọng bạn thích sử dụng trang web này, và nó sẽ mang lại cho bạn nhiều điều bổ ích.