Làm thế nào để thêm các loại tùy chọn mới vào cây tùy chọn?


7

Tôi đang sử dụng cây tùy chọn trong chế độ chủ đề và chế độ chủ đề con và tôi đang cố gắng thêm các loại tùy chọn mới. Các loại tùy chọn mới sẽ dựa trên loại tùy chọn sau chọn, nhưng sẽ chỉ liệt kê các bài đăng từ một danh mục cụ thể.

Tôi đã tạo một tệp mới và thêm nó vào mảng các tệp được bao gồm bắt đầu trên dòng 178 của ot-loader.php. Trong tệp mới, tôi đã cắt và dán loại tùy chọn sau chọn bắt đầu trên dòng 905 của /includes/ot-fifts-options-type.php. Bạn có thể xem tập tin mới này ở đây .

Trong bài đăng của tôi, chọn loại tùy chọn Tôi gắn thêm một con sên duy nhất vào tên hàm. Tôi cũng đặt slug đó vào lớp css .type-post-select cho trình bao bọc thiết lập bên ngoài định dạng. Trong mảng bài truy vấn bài tôi đã thêm một tham số thể loại.

Sau đó, tôi đã thêm loại tùy chọn chọn bài mới vào các tùy chọn chủ đề của mình, hy vọng nó sẽ chỉ hiển thị các bài đăng trong danh mục tôi đã đặt. Nó cho thấy các bài viết từ tất cả các loại. Điều thú vị là tùy chọn được gói trong .type-post-select. Tôi cũng đã tạo một lựa chọn bài thường xuyên, không có css sửa đổi.

Như một thử nghiệm, tôi mệt mỏi khi thêm tham số danh mục vào tùy chọn đăng bài gốc theo cùng một cách và nó hoạt động chính xác như tôi mong đợi - chỉ hiển thị các bài đăng từ danh mục đó. Thật không may, tôi cần phải tạo 6 bài đăng mới, mỗi bài đăng hiển thị từ một danh mục khác nhau.

Rõ ràng tôi đang thiếu một bước, nhưng đối với cuộc sống của tôi, tôi không thể tìm thấy nó. Tôi đã tìm một số nơi khác mà các loại tùy chọn cần phải được đăng ký hoặc một cái gì đó, nhưng không thể tìm thấy nó ...

Câu trả lời:


4

Những gì bạn đang cố gắng có thể được thực hiện mà không cần chỉnh sửa các tệp cốt lõi trong OptionTree. Thêm các chức năng loại tùy chọn tùy chỉnh của bạn vào chủ đề của bạn functions.phpvà mã sau đây.

/**
 * Filter to add custom option types.
 *
 * @param     array     An array of option types.
 * @return    array
 */
function add_custom_option_types( $types ) {

  $types['post_select_a_1'] = 'Post Select option type. (_a_1)';
  $types['post_select_a_2'] = 'Post Select option type. (_a_2)';
  $types['post_select_a_3'] = 'Post Select option type. (_a_3)';
  $types['post_select_a_4'] = 'Post Select option type. (_a_4)';
  $types['post_select_a_5'] = 'Post Select option type. (_a_5)';
  $types['post_select_a_6'] = 'Post Select option type. (_a_6)';

  return $types;

}
add_filter( 'ot_option_types_array', 'add_custom_option_types' );

Điều này sẽ tự động tải các chức năng của bạn vào OptionTree và bạn không cần chỉnh sửa bất kỳ tệp cốt lõi nào. Khi bạn thêm tùy chọn mới, có hai yêu cầu. Một, tất cả các chức năng phải được chuẩn bị trước ot_type_. Hai, khi thêm vào mảng tùy chọn, các khóa mảng mới của bạn cần khớp với tên hàm trừ ot_type_, bạn có thể sử dụng -hoặc _khi tạo khóa. Vì vậy, nếu bạn có một hàm tùy chỉnh có tên, ot_type_super_awesomebạn có thể thêm nó vào mảng được lọc bằng:

$types['super_awesome'] = 'Super Awesome';

hoặc là

$types['super-awesome'] = 'Super Awesome';

Tôi hy vọng rằng sẽ xóa bất kỳ sự nhầm lẫn. Trên một ghi chú bên cạnh có hai ot_type_post_select_a_5tệp trong tệp bạn đã tạo và tôi giả sử là tệp cuối cùng phải có ot_type_post_select_a_6. Chúc mừng!


Derek, cảm ơn rất nhiều vì đã trả lời. Tôi đã thêm mã mà bạn đề xuất, cùng với bao gồm cho tệp hàm ot_type của tôi (giống như trước đây, ngoại trừ một lỗi mà bạn thấy đã sửa) cho hàm.php. Thật không may, không có gì thay đổi :(
JPollock
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.