Bạn có muốn hiển thị nội dung trong bố cục Beaver Builder dựa trên vị trí (mã) quốc gia của khách truy cập không? Bổ trợ Beaver Themer cung cấp rất nhiều tùy chọn có điều kiện nhưng việc nhắm mục tiêu dựa trên vị trí như vậy không có sẵn theo mặc định. Tuy nhiên, điều này có thể được thực hiện thông qua API Logic có điều kiện. Để thực hiện điều này, chúng tôi sẽ xây dựng logic có điều kiện “Mã quốc gia của người dùng” .
Đầu tiên: Tạo tệp Rules.php
Đầu tiên, chúng ta sẽ tạo một tệp có tên là rules.php và tải lên thư mục chủ đề con. Thêm mã sau và tải nó lên ở vị trí chính xác (xem ảnh chụp màn hình bên dưới).
/** * Register a callback function for processing the rule */ BB_Logic_Rules::register( array( 'user-country-code' => 'wpd_user_country_code', ) ); //* Callback function function wpd_user_country_code( $rule ) { //* getting local IP address $ip = $_SERVER['REMOTE_ADDR']; if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)) $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) $ip = $_SERVER['HTTP_CLIENT_IP']; //* getting local geolocation data as json type $json = file_get_contents('http://www.geoplugin.net/json.gp?ip=' . $ip ); $data = json_decode($json); $countryCode = strtoupper( substr( $data->geoplugin_currencyCode, 0, 2) ); if( $rule->operator == "includes" || $rule->operator == "does_not_include" ) { $codes = $rule->compare; $rule->compare = $countryCode; $countryCode = explode( ',', strtoupper( $codes ) ); } return BB_Logic_Rules::evaluate_rule( array( 'value' => $countryCode, 'operator' => $rule->operator, 'compare' => strtoupper( $rule->compare ), ) ); }
Vị trí tập tin
Chúng tôi đang sử dụng Chủ đề Beaver Builder trong ví dụ này. Tốt nhất, hướng dẫn này sẽ hoạt động trong bất kỳ chủ đề nào tương thích với plugin Beaver Builder.
Thứ hai: Đăng ký quy tắc giao diện người dùng
Bây giờ chúng ta cần tạo tệp rule.js. Để bắt đầu, hãy tạo thư mục js bên trong thư mục chủ đề con (xem ảnh chụp màn hình ở trên để tham khảo). Bây giờ, hãy thêm đoạn mã sau vào tệp rules.js và đặt nó bên trong thư mục js .
var addRuleType = BBLogic.api.addRuleType var __ = BBLogic.i18n.__ addRuleType( 'user-country-code', { label: __( 'User Country Code' ), category: 'user', form: { operator: { type: 'operator', operators: [ 'equals', 'does_not_equal', 'includes', 'does_not_include' ], }, compare: { type: 'text', defaultValue: 'US', }, }, } )
Thêm một loại quy tắc mới trong tệp rule.js bằng cách sử dụng BBLogic.api.addRuleType
hàm. Quy tắc của chúng tôi phù hợp với mã quốc gia của khách truy cập. Chúng tôi đang sử dụng 4 toán tử: bằng, không bằng, bao gồm và không bao gồm. Khi bạn chọn toán tử bằng hoặc không bằng , bạn sẽ nhập một giá trị duy nhất như UK . Bạn sẽ nhập nhiều mã quốc gia như FR, NL, PL bằng dấu phẩy khi bạn chọn toán tử bao gồm hoặc không bao gồm .
Bây giờ, tất cả các tệp đã sẵn sàng và chúng tôi sẽ thiết lập chúng để thực thi. Mở tệp functions.php của chủ đề của bạn và thêm mã sau vào cuối.
/** * Creates User Country Code Logic Field */ if ( class_exists( 'FLPageData' ) ) { add_action( 'bb_logic_enqueue_scripts', function() { wp_enqueue_script( 'wpd-themer-logic-rules', get_stylesheet_directory_uri() . '/js/rules.js', array( 'bb-logic-core' ), '1.1', true ); } ); add_action( 'init', function() { require_once get_stylesheet_directory() . '/rules.php'; } ); }
Bây giờ bạn sẽ thấy logic Mã quốc gia của người dùng trong danh mục Người dùng . Làm theo điều này:
- Mở Cài đặt bằng cách nhấp vào biểu tượng cờ lê của hàng / cột / mô-đun.
- Nhấp vào Tab Nâng cao.
- Chuyển đến phần Hiển thị .
- Chọn Logic có điều kiện từ menu thả xuống Hiển thị .
- Bấm vào nút Mở cài đặt logic có điều kiện .
- Đặt logic theo yêu cầu của bạn và nhấp vào nút Lưu .