커스텀 Divi 모듈 작성 방법
Divi Wordpress 테마용 커스텀 모듈을 추가하려면 어떻게 해야 하나요?http://www.elegantthemes.com/gallery/divi/
원래 모듈은 메인 모듈로 생성됩니다.php
예:
class ET_Builder_Module_Gallery extends ET_Builder_Module { .... }
근데...ET_Builder_Module
플러그인 또는 테마 함수에서 클래스에 액세스할 수 없습니다.php
대부분의 다른 솔루션은 너무 복잡합니다.가장 간단한 방법은 divi 고유의 액션 후크에 커스텀모듈을 로드하는 것입니다.et_builder_ready
, 다음과 같이 합니다.
add_action( 'et_builder_ready', 'evr_initialize_divi_modules' );
function evr_initialize_divi_modules() {
if ( ! class_exists( 'ET_Builder_Module' ) ) { return; }
class EVR_Builder_Module_Testimonial extends ET_Builder_Module {
function init() {
$this->name = esc_html__( 'Testimonial', 'evr' );
$this->slug = 'evr_pb_testimonial';
$this->fb_support = true;
// ...
}
}
}
전체 데모 코드는 github에서 확인할 수 있습니다.새로운 Divi 3 프런트 엔드 빌더에서 작동하는 몇 가지 지침과 함께:
https://github.com/stracker-phil/divi3-vb-custom-modules/
기능에서 아래에 배치하십시오.php 파일.include 파일(custom-modules.php라고 불렀습니다)은 ET_Builder_Module(WP_Widget과 매우 유사)을 확장하는 클래스입니다.Divi > > includes > builder > main-modules.php 에서 파일을 엽니다.기존 모듈 중 하나를 새 모듈의 예 또는 기준으로 사용합니다.custom-modules.php에 복사하여 붙여넣습니다.새 클래스 이름, 필요에 따라 편집 등
function doCustomModules(){
if(class_exists("ET_Builder_Module")){
include("custom-modules.php");
}
}
function prepareCustomModule(){
global $pagenow;
$is_admin = is_admin();
$action_hook = $is_admin ? 'wp_loaded' : 'wp';
$required_admin_pages = array( 'edit.php', 'post.php', 'post-new.php', 'admin.php', 'customize.php', 'edit-tags.php', 'admin-ajax.php', 'export.php' ); // list of admin pages where we need to load builder files
$specific_filter_pages = array( 'edit.php', 'admin.php', 'edit-tags.php' ); // list of admin pages where we need more specific filtering
$is_edit_library_page = 'edit.php' === $pagenow && isset( $_GET['post_type'] ) && 'et_pb_layout' === $_GET['post_type'];
$is_role_editor_page = 'admin.php' === $pagenow && isset( $_GET['page'] ) && 'et_divi_role_editor' === $_GET['page'];
$is_import_page = 'admin.php' === $pagenow && isset( $_GET['import'] ) && 'wordpress' === $_GET['import']; // Page Builder files should be loaded on import page as well to register the et_pb_layout post type properly
$is_edit_layout_category_page = 'edit-tags.php' === $pagenow && isset( $_GET['taxonomy'] ) && 'layout_category' === $_GET['taxonomy'];
if ( ! $is_admin || ( $is_admin && in_array( $pagenow, $required_admin_pages ) && ( ! in_array( $pagenow, $specific_filter_pages ) || $is_edit_library_page || $is_role_editor_page || $is_edit_layout_category_page || $is_import_page ) ) ) {
add_action($action_hook, 'doCustomModules', 9789);
}
}
$theme_data = wp_get_theme();
$parent_data = $theme_data->parent();
if(version_compare((string)$parent_data->Version, "2.5.9", ">")) {
add_action('et_builder_ready', 'doCustomModules');
} else {
doCustomModule();
}
중요사항:커스텀 모듈의 slug에는 문자열이 포함되어 있어야 합니다.et_pb_
또는 함수에 의해 제외됩니다.et_pb_allowed_modules_list()
.
다음 코드를 사용하여 새로운 Divi 모듈을 추가할 수 있었습니다(익명함수에는 PHP 5.3+ 필요).
add_action(is_admin() ? 'wp_loaded' : 'wp', function() {
require __DIR__ . '/custom-divi-module.php';
}, 20);
포함된 파일 내에서 복사 및 붙여넣기class
에서wp-content/themes/Divi/includes/builder/main-modules.php
파일을 작성한 후 필요에 따라 수정합니다.아래 예를 참조하십시오(아래에 나열된 각 메서드의 내용을 얻으려면 언급된 파일에서 실제 클래스를 복사하십시오).마음에 들어요.ET_Builder_Module_Code
단순화를 위한 수업) :
class YOUR_MODULE_NAME extends ET_Builder_Module {
function init() {
// Name, slug, and some other settings for the module go here
}
function get_fields() {
// This method returns an array of fields that the module will
// display as the module settings
}
function shortcode_callback($atts, $content = null, $function_name) {
// This method returns the content the module will display
}
}
new YOUR_MODULE_NAME;
위의 코드가 작동하지 않습니다.함수도 호출해야 합니다.
다음은 https://divi.space/blog/adding-custom-modules-to-divi/ 작업 코드의 예입니다.
function DS_Custom_Modules(){
if(class_exists("ET_Builder_Module")){
include("ds-custom-modules.php");
}
}
function Prep_DS_Custom_Modules(){
global $pagenow;
$is_admin = is_admin();
$action_hook = $is_admin ? 'wp_loaded' : 'wp';
$required_admin_pages = array( 'edit.php', 'post.php', 'post-new.php', 'admin.php', 'customize.php', 'edit-tags.php', 'admin-ajax.php', 'export.php' ); // list of admin pages where we need to load builder files
$specific_filter_pages = array( 'edit.php', 'admin.php', 'edit-tags.php' );
$is_edit_library_page = 'edit.php' === $pagenow && isset( $_GET['post_type'] ) && 'et_pb_layout' === $_GET['post_type'];
$is_role_editor_page = 'admin.php' === $pagenow && isset( $_GET['page'] ) && 'et_divi_role_editor' === $_GET['page'];
$is_import_page = 'admin.php' === $pagenow && isset( $_GET['import'] ) && 'wordpress' === $_GET['import'];
$is_edit_layout_category_page = 'edit-tags.php' === $pagenow && isset( $_GET['taxonomy'] ) && 'layout_category' === $_GET['taxonomy'];
if ( ! $is_admin || ( $is_admin && in_array( $pagenow, $required_admin_pages ) && ( ! in_array( $pagenow, $specific_filter_pages ) || $is_edit_library_page || $is_role_editor_page || $is_edit_layout_category_page || $is_import_page ) ) ) {
add_action($action_hook, 'DS_Custom_Modules', 9789);
}
}
Prep_DS_Custom_Modules();
여기서 작은 논쟁을 해결하려고 합니다.클래스 ET_Builder_Module_Custom_Module은 ET_Builder_Module {}을(를) 확장하며 메인 모듈도 작동합니다.Child Theme를 사용하는 경우 php은 자유롭게 수정할 수 있습니다.나는 최근에 Divi Theme에 아약스를 넣었고 업데이트 후에는 모든 것이 잘 작동했다.
주의: 자녀 테마 내에서 사용하는 파일에 업데이트가 있는지 확인하는 것이 좋습니다.자녀 파일도 업데이트해야 할 수 있습니다.
저는 이것이 이 게시물의 모든 미래의 독자들에게 도움이 되기를 바랍니다.
작성하는 새로운 모듈에서의 HFGL;)
커스텀 모듈을 작성하기 위해 기존 모듈을 사용하여 디자인(레이아웃)을 만들고, 그 디자인을 Divi 라이브러리에 저장하고, 텍스트 또는 코드 모듈을 사용하여 모든 HTML/jquery 코드를 작성합니다.
여기처럼 https://github.com/Skaidrius/Divi/tree/master/Layouts/Price-list
Divi 테마 파일을 수정할 수 있습니다(불량).
예를 들어 주 모듈을 수정할 수 있습니다.php: 새 모듈을 추가합니다.
class ET_Builder_Module_Custom_Module extends ET_Builder_Module {
function init() {
$this->name = __( 'My Module', 'et_builder' );
$this->slug = 'et_pb_custom_module';
그런 다음 기능에서 커스터마이저의 패널을 추가해야 합니다.php:
/* Section: Custom Module */
$wp_customize->add_section( 'et_pagebuilder_custom_module', array(
'priority' => 220,
'capability' => 'edit_theme_options',
'title' => __( 'My Module', 'Divi' ),
// 'description' => '',
) );
함수에서 검색을 하면.php 어디에 추가할지 쉽게 찾을 수 있습니다.
언급URL : https://stackoverflow.com/questions/31565287/how-to-create-custom-divi-module
'programing' 카테고리의 다른 글
특정 제품 카테고리에 따른 WooCommerce 체크아웃 메시지 (0) | 2023.03.04 |
---|---|
외부 템플릿에서 $compile 사용(템플릿)URL)의 각도 지시어 (0) | 2023.03.04 |
다른 Chromium 브라우저가 정상적으로 작동하는 경우 RESULT_CODE_INVALID_CMDLINE_URL이 Chrome에 표시됨 (0) | 2023.03.04 |
스프링 부트 - Entity Manager 구성 (0) | 2023.03.04 |
OrderBy 뒤에 Angularjs의 $index가 잘못됨 (0) | 2023.03.04 |