Các mẹo hay cho WordPress #1

Các mẹo hay cho WordPress #1

Trong khi làm việc với WordPress, ngoài việc sử dụng theme và plugin để tùy chỉnh website của mình thì còn một việc mà những người sử dụng WordPress nâng cao hay làm nữa đó là viết code tùy chỉnh dựa vào hai tính năng action & filter trong WordPress.

Hai tính năng này có thể giúp người dùng trực tiếp can thiệp vào mã nguồn của WordPress mà không cần sửa trực tiếp, để tránh các nguy cơ bị lỗi nghiêm trọng hoặc không bị mất đi khi tiến hành cập nhật WordPress.

Trong bài này, mình sẽ giới thiệu qua một vài đoạn code khá hay để bạn có thể sử dụng, đa phần là copy vào file functions.php trong theme bạn đang sử dụng.

Tự chuyển hướng sau khi đăng ký

Code này sẽ giúp người dùng chuyển hướng đến một trang nhất định sau khi họ đăng ký thành công thay vì trở lại trang đăng nhập như mặc định.



function wps_registration_redirect(){
    return home_url( '/member/' );
}
add_filter( 'registration_redirect', 'wps_registration_redirect' );

Trong đó, bạn thay chữ member thành slug của page mà bạn cần chuyển tới.

Hiển thị số lượng post của custom post type ra Dashboard

Hiện tại khi bạn ra trang Dashboard của trang quản trị, bạn sẽ thấy phần tên là At a Glance, ở đó sẽ hiển thị số lượng post và page hiện có. Nếu bạn muốn thêm dòng hiển thị số lượng post trong một post type nào đó thì có thể sử dụng code dưới đây.


add_filter( 'dashboard_glance_items', 'custom_glance_items', 10, 1 );
function custom_glance_items( $items = array() ) {
    $post_types = array( 'post_type_1', 'post_type_2' );
    foreach( $post_types as $type ) {
        if( ! post_type_exists( $type ) ) continue;
        $num_posts = wp_count_posts( $type );
        if( $num_posts ) {
            $published = intval( $num_posts->publish );
            $post_type = get_post_type_object( $type );
            $text = _n( '%s ' . $post_type->labels->singular_name, '%s ' . $post_type->labels->name, $published, 'your_textdomain' );
            $text = sprintf( $text, number_format_i18n( $published ) );
            if ( current_user_can( $post_type->cap->edit_posts ) ) {
                $items[] = sprintf( '%2$s', $type, $text ) . "n";
            } else {
                $items[] = sprintf( '%2$s', $type, $text ) . "n";
            }
        }
    }
    return $items;
}

Trong đó, post_type_1 và post_type_2 là slug của post type mà bạn cần hiển thị ra.

Chuyển sang trang kế tiếp bằng bàn phím

Đây không phải là code PHP mà là jQuery, bạn sẽ cần chèn vào một file JS nào đó trong theme.


      $(document).keydown(function(e){
                if (e.which == 37) { // left arrow
                   if(!prev) return false;
                        window.location.href = $('link[rel=prev]').attr('href');
                }
                if (e.which == 39) { // right arrow
                   if(!next) return false;
                        window.location.href = $('link[rel=next]').attr('href');
                }
        });

Trong đó, 37 và 39 là số thứ tự của bàn phím. Để xem số của từng phím, bạn có thể vào đây.

Thêm Featured Image vào RSS Feed

Mặc định RSS Feed chỉ lấy nội dung và tiêu đề của bài viết. Nếu bài của bạn có featured image nhưng nó không hiển thị ra ngoài thì RSS cũng không hiển thị, chèn code dưới đây vào để khắc phục điều đó.


add_filter( 'the_content', 'featured_image_in_feed' );
function featured_image_in_feed( $content ) {
    global $post;
    if( is_feed() ) {
        if ( has_post_thumbnail( $post->ID ) ){
            $output = get_the_post_thumbnail( $post->ID, 'medium', array( 'style' => 'float:right; margin:0 0 10px 10px;' ) );
            $content = $output . $content;
        }
    }
    return $content;
}

Bắt buộc thêm ảnh Featured Image trước khi đăng bài

Đối với một số blog có nhiều tác giả, thì việc cộng tác viên quên gắn featured image cho bài viết là điều dễ xảy ra. Chèn đoạn dưới đây vào file functions.php để khắc phục việc đó:


add_action('save_post', 'wpds_check_thumbnail');
add_action('admin_notices', 'wpds_thumbnail_error');
function wpds_check_thumbnail($post_id) {
    // change to any custom post type
    if(get_post_type($post_id) != 'post')
        return;
    if ( !has_post_thumbnail( $post_id ) ) {
        // set a transient to show the users an admin message
        set_transient( "has_post_thumbnail", "no" );
        // unhook this function so it doesn't loop infinitely
        remove_action('save_post', 'wpds_check_thumbnail');
        // update the post set it to draft
        wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
        add_action('save_post', 'wpds_check_thumbnail');
    } else {
        delete_transient( "has_post_thumbnail" );
    }
}
function wpds_thumbnail_error()
{
    // check if the transient is set, and display the error message
    if ( get_transient( "has_post_thumbnail" ) == "no" ) {
        echo "<div id='message' class="error"><p><strong>Bạn phải thêm ảnh Featured Image!.</strong></p></div>";
        delete_transient( "has_post_thumbnail" );
    }
}

Bắt buộc bình luận phải đủ ký tự

Một cách chống việc spam vớ vẩn ở comment, bạn có thể chỉ định phải viết tối thiểu bao nhiêu ký tự để có thể đăng bình luận.


add_filter( 'preprocess_comment', 'minimal_comment_length' );
function minimal_comment_length( $commentdata ) {
    $minimalCommentLength = 20;
    if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimalCommentLength ){
    wp_die( 'All comments must be at least ' . $minimalCommentLength . ' characters long.' );
    }
    return $commentdata;
}

Thêm màu trạng thái bài viết

Mặc định WordPress có một số trạng thái bài viết như Draft, Published, Pending, Future, Private. Nhưng thật khó khăn để nhận ra nếu bạn chỉ lướt sơ danh sách bài viết, thêm màu cho từng trạng thái là cách hữu hiệu nhất.


add_action('admin_footer','posts_status_color');
function posts_status_color(){
?>
<style>
.status-draft{background: #FCE3F2 !important;}
.status-pending{background: #87C5D6 !important;}
.status-publish{/* no background keep wp alternating colors */}
.status-future{background: #C6EBF5 !important;}
.status-private{background:#F2D46F;}
</style>
<?php
}

Đặt link nofollow ở một số category nhất định

Thông thường các plugin như WP External Link sẽ giúp bạn đưa các link trỏ ra ngoài thành nofollow và đưa 1 số link đặc biệt thành dofollow. Thế tại sao lại không thử đưa link các bài viết trong một category nhất định thành nofollow?


function nofollow_cat_posts($text) {
global $post;
        if( in_category(1) ) { // SET CATEGORY ID HERE
                $text = stripslashes(wp_rel_nofollow($text));
        }
        return $text;
}
add_filter('the_content', 'nofollow_cat_posts');

Tự động xóa revision của bài viết

Revision trong WordPress là các bản sao của bài viết nó sẽ tự động lưu sau mỗi thời gian nhất định khi bạn soạn bài. Nếu blog bạn có quá nhiều revision, việc database bị phình to hay chậm chạp là điều dễ hiểu.

Các plugin như WP Clean Up có thể giúp bạn xóa revision thừa nhưng nó chỉ xóa nếu bạn sử dụng plugin đó. Có một cách khác để bạn tự động xóa revision là chèn một đoạn code dưới đây vào file functions.php.


$wpdb->query( "DELETE FROM $wpdb->posts WHERE post_type="revision"" );

Tự chèn custom field khi post/page được đăng

Một bài thực hành cho những ai mới tập sử dụng action hook trong WordPress. Bạn có thể tùy chỉnh tự thêm một custom field và một giá trị nhất định mỗi khi bài được đăng lên.


add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post'. 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
    global $wpdb;
    if(!wp_is_post_revision($post_ID)) {
        add_post_meta($post_ID, 'ten_field', 'gia_tri', true);
    }
}

Đổi slug đường dẫn đến trang tác giả

Mặc định khi truy cập vào một trang tác giả trên WordPress nó sẽ có định dạng https://example.com/author/thachpham. Mẹo dưới đây có thể giúp bạn đổi chữ author trên đường dẫn thành thanh-vien chẳng hạn.


add_action('init', 'cng_author_base');
function cng_author_base() {
    global $wp_rewrite;
    $author_slug = 'thanh-vien';
    $wp_rewrite->author_base = $author_slug;
}

Cho phép đăng nhập bằng username lẫn email

Mặc định WordPress chỉ cho phép đăng nhập bằng username thôi, mẹo này sẽ cho phép khách có thể đăng nhập lẫn username và email của thành viên.


function login_with_email_address($username) {
        $user = get_user_by('email',$username);
        if(!empty($user->user_login))
                $username = $user->user_login;
        return $username;
}
add_action('wp_authenticate','login_with_email_address');
function change_username_wps_text($text){
       if(in_array($GLOBALS['pagenow'], array('wp-login.php'))){
         if ($text == 'Username'){$text="Username / Email";}
            }
                return $text;
         }
add_filter( 'gettext', 'change_username_wps_text' );

Chặn các truy vấn nguy hiểm

Thông thường các hacker có thể khai thác lỗi SQL Injection bằng việc trực tiếp nhập các câu lệnh truy vấn trên URL của website. Hãy chèn code dưới đây vào file functions.php để ngăn chặn việc này:


global $user_ID; if($user_ID) {
	if(!current_user_can('administrator')) {
		if (strlen($_SERVER['REQUEST_URI']) > 255 ||
			stripos($_SERVER['REQUEST_URI'], "eval(") ||
			stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
			stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
			stripos($_SERVER['REQUEST_URI'], "base64")) {
				@header("HTTP/1.1 414 Request-URI Too Long");
				@header("Status: 414 Request-URI Too Long");
				@header("Connection: Close");
				@exit;
		}
	}
}

Còn tiếp

Do bài dài nên mình xin tạm dừng ở đây và sẽ giới thiệu thêm các mẹo hay ở bộ sưu tập sau nhé. 😀

Nguồn: Các mẹo hay cho WordPress #1 | Thạch Phạm

Categories: Content Marketing, Digital Marketing, Google Ads, Kinh doanh, PHP, SEO, Server - Hosting, WordPress, WordPress Development, Wordpress Plugin, WordPress Theme, Wordpress Tutorial,
Tags: baemin, bán hàng online, bán hàng online trên facebook, bán hàng qua facebook, bán hàng quần áo, bán hàng thời trang, bán hàng trên baemin, bán hàng trên facebook, bán hàng trên fanpage, bán hàng trên grab, bán hàng trên marketplace, bán hàng trên now, bán hàng trên tiktok, báo cáo kết quả hoạt động kinh doanh, bí quyết kinh doanh online, bít tết Âu việt, black friday, buôn bán hàng thùng, buôn bán hàng thùng tuyển chọn, cách bán hàng online đắt khách, cách bán hàng trên marketplace, cách bán hàng trên tiktok, câu chuyện kinh doanh, câu chuyện thành công, chương trình khuyến mãi, công nghệ phần mềm bán hàng, cửa hàng cafe, cửa hàng minh tuấn mobile, cửa hàng phụ kiện, cửa hàng thời trang, cửa hàng thực phẩm, cửa hàng thực phẩm sạch, doanh số bán hàng, dox garage & coffee, dox garage &amp; coffee, đăng ký bán hàng trên baemin, đăng ký bán hàng trên go food, đăng ký bán hàng trên grab, đăng ký bán hàng trên now, facebook, facebook pos, fanpage, file excel, file excel báo cáo kết quả kinh doanh, file excel quản lý kho, foodngon, go food, go jek, grab, halo mobile, khởi nghiệp, khởi nghiệp kinh doanh, khởi nghiệp kinh doanh thời trang, kinh doanh cafe, kinh doanh điện thoại, kinh doanh điện tử điện máy, kinh doanh đồ handmade, kinh doanh gì sau dịch, kinh doanh mỹ phẩm, kinh doanh mỹ phẩm online, kinh doanh nhà hàng, kinh doanh online, kinh doanh phụ kiện, kinh doanh quán cafe, kinh doanh shop thời trang, kinh doanh siêu thị mini, kinh doanh spa, kinh doanh thành công, kinh doanh thời trang, kinh doanh thời trang trẻ em, kinh doanh thực phẩm, kinh doanh thực phẩm sạch thành công, kinh doanh trên facebook, kinh doanh trên grab, kinh nghiệm bán hàng, kinh nghiệm kinh doanh, làm đồ handmade, lily shop, link kháng tài khoản quảng cáo, lụa tơ tằm bá minh, marketing online, mặt hàng dễ bán, mẹo bán hàng, mẹo bán hàng trên facebook, mẹo hay, ngày black friday năm 2020 là ngày nào?, now, now - foody, phầm mềm quản lý bán hàng miễn phí, phần mềm chốt đơn, phần mềm chốt đơn hàng, phần mềm miễn phí, phần mềm pos, phần mềm quản lý bán hàng, phần mềm quản lý bán hàng đáng tin cậy, phần mềm quản lý bán hàng miễn phí, phụ kiện ben & tony, phụ kiện ben &amp; tony, phụ kiện hà xinh, quán cafe hiệu quả, quản lý cửa hàng, quản lý cửa hàng thời trang, quản lý nhà hàng, quản lý nhân viên, quản lý nhân viên cứng đầu, quản lý nhân viên thời vụ, quảng cáo thương hiệu, shop thời trang, shopee, siêu thị minimart, status, status bán hàng, status quảng cáo mỹ phẩm, stella spa, stt bán hàng online hài hước, stt tương tác bán hàng, t.u.s shop, tài khoản bị vô hiệu hóa, tài khoản facebook, tài khoản facebook bị vô hiệu hóa, tải miễn phí file excel quản lý kho, tăng doanh thu mùa black friday, thời trang kosta, thời trang mine, thời trang tú trần shop, thực phẩm sạch, thực phẩm sạch 02, thực phẩm sạch tâm an, thuê mặt bằng kinh doanh, tiki, tiktok, tú trần shop,
Cài WordPress bằng lệnh UNIX với WP CLI
Làm khung phát nhạc MP3 và ZippyShare trong bài
Tác giả

Bình luận

Today, taking into consideration the fast chosen lifestyle that everyone is having, credit cards get this amazing demand throughout the market. Persons out of every arena are using credit card and people who not using the credit card have prepared to apply for just one. Thanks for spreading your ideas in credit cards. https://psoriasismedi.com psoriasis drugs for sale

Leave a Message

Registration isn't required.

NguyenLp LarTheme