Móc loại bài đăng tùy chỉnh WordPress

Các loại bài đăng tùy chỉnh là một cách tuyệt vời để sắp xếp và cấu trúc dữ liệu của bạn trong WordPress. Rất nhiều plugin WordPress, đặc biệt là những plugin phức tạp, sử dụng các loại bài đăng tùy chỉnh để triển khai các tính năng của chúng

Thật tuyệt nếu các nhà phát triển plugin đã thấy trước rằng người dùng có thể muốn sửa đổi một trong các loại bài đăng tùy chỉnh của họ. Họ có thể thêm một số tùy chọn trong phần cài đặt hoặc có thể thêm một số hook hành động/bộ lọc trong mã. Nhưng dù sao đi nữa, đôi khi bạn chỉ cần thay đổi cài đặt của loại bài đăng tùy chỉnh

Bạn có thể muốn thay đổi nhãn của loại bài đăng hoặc bạn có thể muốn ẩn nó khỏi API REST. Làm thế nào để đạt được mục tiêu này?

Giới thiệu

Trước hết, không sửa đổi mã của plugin. Nếu bạn sửa đổi mã của plugin, tất cả các thay đổi của bạn sẽ được viết lại vào lần tới khi ai đó cập nhật plugin. Bạn phải bắt đầu suy nghĩ theo cách của WordPress

Như bạn có thể biết, bạn có thể đăng ký loại bài đăng tùy chỉnh bằng chức năng WordPress tích hợp — register_post_type(). Ý tôi là gì khi nói rằng bạn phải suy nghĩ theo cách của WordPress?

May mắn thay, các nhà phát triển cốt lõi của WordPress đã cung cấp cho chúng tôi một hook bộ lọc tiện dụng — register_post_type_args. Mỗi khi WordPress đăng ký một loại bài đăng tùy chỉnh mới, nó sẽ phân tích cú pháp các đối số được cung cấp và cho phép bạn sửa đổi chúng bằng hook bộ lọc này

Như bạn có thể đã đoán, nếu bạn muốn sửa đổi loại bài đăng tùy chỉnh mà không cần chỉnh sửa cuộc gọi register_post_type(), bạn cần sử dụng hook này. Hãy thực hành một chút

điều kiện tiên quyết

Hãy tưởng tượng rằng chúng ta có một plugin đăng ký loại bài đăng tùy chỉnh - Dịch vụ. Đây là mã đăng ký loại bài đăng này

add_action( 'init', 'register_service_post_type', 10 );
function register_service_post_type() {
	$labels = array(
		'name'                  => 'Services',
		'singular_name'         => 'Service',
		'menu_name'             => 'Services',
		'name_admin_bar'        => 'Services',
		'archives'              => 'Service Archives',
		'attributes'            => 'Service Attributes',
		'parent_item_colon'     => 'Parent Service',
		'all_items'             => 'All Services',
		'add_new_item'          => 'Add New Service',
		'add_new'               => 'Add New',
		'new_item'              => 'New Service',
		'edit_item'             => 'Edit Service',
		'update_item'           => 'Update Service',
		'view_item'             => 'View Service',
		'view_items'            => 'View Services',
		'search_items'          => 'Search Service',
		'not_found'             => 'Not found',
		'not_found_in_trash'    => 'Not found in Trash',
		'featured_image'        => 'Featured Image',
		'set_featured_image'    => 'Set featured image',
		'remove_featured_image' => 'Remove featured image',
		'use_featured_image'    => 'Use as featured image',
		'insert_into_item'      => 'Insert into Service',
		'uploaded_to_this_item' => 'Uploaded to this service',
		'items_list'            => 'Services list',
		'items_list_navigation' => 'Services list navigation',
		'filter_items_list'     => 'Filter services list',
	);
	
	$args = array(
		'label'                 => 'Service',
		'description'           => 'Services you provide',
		'labels'                => $labels,
		'supports'              => array( 'title', 'editor' ),
		'taxonomies'            => array( 'category' ),
		'hierarchical'          => false,
		'public'                => true,
		'show_ui'               => true,
		'show_in_menu'          => true,
		'menu_position'         => 20,
		'menu_icon'             => 'dashicons-hammer',
		'show_in_admin_bar'     => true,
		'show_in_nav_menus'     => true,
		'can_export'            => true,
		'has_archive'           => false,
		'exclude_from_search'   => true,
		'publicly_queryable'    => false,
		'capability_type'       => 'page',
		'show_in_rest'          => false,
	);

	register_post_type( 'service', $args );
}

Nếu bạn đã từng tạo các loại bài đăng tùy chỉnh của riêng mình trước đây, thì không có gì mới cho bạn. Dù sao, bây giờ biết chúng ta sẽ có những đối số mặc định nào. Hãy thử sửa đổi chúng bằng hook register_post_type_args

Làm cách nào để thay đổi nhãn loại bài đăng tùy chỉnh?

Trong ví dụ trên, tôi sẽ chỉ cho bạn cách thay đổi một nhãn cụ thể và cách sửa đổi tất cả các nhãn cùng một lúc

add_filter( 'register_post_type_args', 'customize_service_post_type_labels', 10, 2 );
function customize_service_post_type_labels( $args, $post_type ) {
	// Let's make sure that we're customizing the post type we really need
	if ( $post_type !== 'service' ) {
		return $args;
	}
	
	// Now, we have access to the $args variable
	// If you want to modify just one label, you can do something like this
	$args['labels']['name'] = 'Offerings';
	
	// But let's imagine that I want to change all Service substring occurrencies to the new one
	$new_labels = array();
	
	foreach ( $args['labels'] as $key => $value ) {
		if ( strpos( $value, 'Service' ) !== false ) {
			$new_value = str_replace( 'Service', 'Offering', $value );
			$new_labels[$key] = $new_value;
		} else {
			$new_labels[$key] = $value;
		}
	}
	
	$args['labels'] = $new_labels;
	
	return $args;
}

Làm cách nào để thêm các nguyên tắc phân loại mới vào loại bài đăng tùy chỉnh?

Như bạn có thể nhận thấy, phân loại duy nhất mà loại bài đăng tùy chỉnh của chúng tôi có là danh mục. Nếu tôi muốn thêm thẻ hỗ trợ vào dịch vụ của mình thì sao?

add_filter( 'register_post_type_args', 'add_tags_support_to_service_post_type', 10, 2 );
function add_tags_support_to_service_post_type( $args, $post_type ) {
	// Let's make sure that we're customizing the post type we really need
	if ( $post_type !== 'service' ) {
		return $args;
	}
	
	// In our case, I'm pretty sure that the $args['taxonomies'] is an array
	// But it's always a good idea to double check external variables and arguments
	if ( is_array( $args['taxonomies'] ) ) {
		$args['taxonomies'][] = 'post_tag';
	} else {
		$args['taxonomies'] = array( 'post_tag' );
	}
	
	return $args;
}

Tóm lược

Như bạn thấy, bằng cách sử dụng hook register_post_type_args, bạn có thể dễ dàng tùy chỉnh các loại bài đăng tùy chỉnh của bên thứ ba mà không cần sửa đổi mã nguồn. Nói cách khác, bạn sẽ có thể cập nhật plugin hoặc chủ đề đăng ký các loại bài đăng đã sửa đổi, giúp trang web của bạn an toàn hơn và công việc của bạn dễ dàng hơn

Tôi hy vọng bạn tìm thấy bài đăng này hữu ích. Hãy chia sẻ ý kiến ​​​​và câu hỏi của bạn trong phần bình luận bên dưới. Đừng quên đăng ký tài khoản Twitter của tôi nếu bạn không muốn bỏ lỡ các bài viết mới trên trang web của tôi

Làm cách nào để tạo loại bài đăng tùy chỉnh trong WordPress theo chương trình?

Hãy tìm hiểu sâu về từng bước sau. .
Bước 1. Đăng ký Custom Post Type. .
Bước 2. Thêm mảng nhãn, thêm giá trị vào mảng đối số. .
Bước 3. Tạo phân loại tùy chỉnh. .
Bước 4. Tạo mẫu loại bài đăng tùy chỉnh để hiển thị nội dung. .
Bước 5. Xuất bản và thử nghiệm bài đăng tùy chỉnh

Làm cách nào để tạo các loại bài đăng tùy chỉnh trong WordPress mà không cần sử dụng plugin?

Cách tạo loại bài đăng tùy chỉnh mà không cần plugin .
Chuyển đến Trình tạo loại bài đăng
Điền vào các trường cho các tùy chọn tùy chỉnh của bạn
Nhấp vào Cập nhật mã
Tạo một tệp trên máy tính của bạn kết thúc bằng một. phần mở rộng php (ví dụ: custom-post-type. php )
Thêm tiêu đề tệp plugin WordPress vào đầu mã1

CPT WordPress là gì?

CPT là viết tắt của Loại bài đăng tùy chỉnh . WordPress sử dụng các bài đăng như một cách lưu trữ các phần nội dung khác nhau. Nội dung này sau đó có thể được sử dụng theo nhiều cách khác nhau. Mặc dù chúng được gọi là bài đăng, nhưng chúng có thể được sử dụng cho bất kỳ mục đích nào yêu cầu lưu trữ, thay đổi và xóa nội dung.