Cái gì là tất cả các ngôn ngữ trực tuyến (ngay lập tức $ $)


10

Tôi là người mới trong WordPress. Tôi đang cố gắng hiểu cách nó tạo ra các trang XHTML. Tôi đoán đó là chức năng của do_action( 'hook-name' ), nhưng tôi bị mắc kẹt với sự hiểu biết về hướng dẫn isset( $wp_filter['all] )khi đọc hàm do_action vì tôi không hiểu nghĩa của từ này là gì all.

Đây là một tính năng PHP hay WordPress?

Câu trả lời:


9

allchỉ là một chuỗi các nhà phát triển WordPress chọn để hành xử khác với bất kỳ hook nào khác. Khi bạn gắn vào all, cuộc gọi lại của bạn sẽ kích hoạt cho tất cả các móc khác .

Tôi sẽ không dành quá nhiều thời gian để tìm kiếm nguồn gốc do_action, chỉ cần biết rằng:

  1. add_action( 'x', 'whatever' )sẽ có nghĩa là whatevercháy chodo_action( 'x' )
  2. add_action( 'all', 'whatever' )sẽ có nghĩa là whatevercháy cho mọi người do_action , bất kể tên của móc.

5

Có điều kiện if ( isset($wp_filter['all']) ) {bạn có thể tìm thấy ngay trong các hàm tạo móc này:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

Sự khác biệt giữa chúng là số lượng đối số được gửi. Hoặc chúng ta cần nhiều đối số, do đó ref_arrayhoặc đối số duy nhất. Sự khác biệt "hành động so với bộ lọc" là đơn giản, hành động có thể thực hiện bất kỳ chức năng / hành động nào và tên bộ lọc thường được dành riêng cho các chức năng lấy dữ liệu chuỗi và trả về dữ liệu đó được lọc.

OK, đây là cách bạn tạo móc. Và hook có tên và bạn có thể câu nhiều tên hàm trên cùng một tên hook (đọc: tag).

nhập mô tả hình ảnh ở đây

Nhưng một khi bạn xác định tất cả các hàm được liên kết với các hook cụ thể, bạn cần lưu trữ ở đâu đó tất cả các tên hook và tên hàm liên quan. Đây là lý do tại sao chúng tôi ave global $wp_filtertrong WordPress. Nếu bạn xuất biến đó, bạn sẽ nhận được một cái gì đó như ...

Array
(
    [pre_term_name] => Array
        (
            [10] => Array
                (
                    [sanitize_text_field] => Array
                        (
                            [function] => sanitize_text_field
                            [accepted_args] => 1
                        )

                    [wp_filter_kses] => Array
                        (
                            [function] => wp_filter_kses
                            [accepted_args] => 1
                        )

                )

            [30] => Array
                (
                    [_wp_specialchars] => Array
                        (
                            [function] => _wp_specialchars
                            [accepted_args] => 1
                        )

                )

        )

Vâng, chúng ta không tranh luận về tên của biến này. Cá nhân, tôi sẽ gọi nó là khác nhau, có thể xảy ra $wp_hooksvì tên này không được sử dụng. Tuy nhiên, nếu chúng tôi quay lại lịch sử, chúng tôi sẽ tìm thấy do_actionkể từ khi @since 1.2.0apply_filtersđược @since 0.71(phát hành ngày 9 tháng 6 năm 2003.). Điều đó cung cấp cho bạn lời giải thích khá tốt tại sao nó được gọi $wp_filter. Rất có thể là do các bộ lọc được giới thiệu đầu tiên trong WordPress. Sau đó họ giới thiệu hành động.

Chỉ cần xây dựng được nói từ @TheDeadMedic ...

add_action ('tất cả', 'bất cứ điều gì') sẽ có nghĩa là bất cứ điều gì kích hoạt cho mọi do_action, bất kể tên của hook.

Tôi nêu câu hỏi tại sao chúng ta cần $wp_filter['all']? Chỉ là một vài ví dụ. Hướng nội, kiểm tra và có thể có nhiều tính năng bên trong hệ thống hơn trong các phiên bản WordPress trong tương lai.

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.