ID; if ( 'builder' === get_post_meta( $id, '_elementor_edit_mode', true ) && get_post_meta( $id, '_elementor_data', true ) ) { return 'elementor'; } if ( 'on' === get_post_meta( $id, '_et_pb_use_builder', true ) ) { return 'divi'; } if ( 'on' === get_post_meta( $id, '_wpb_vc_js_status', true ) || false !== strpos( $post->post_content, '[vc_row' ) ) { return 'wpbakery'; } if ( '1' === (string) get_post_meta( $id, '_fl_builder_enabled', true ) ) { return 'beaver'; } if ( get_post_meta( $id, '_bricks_page_content_2', true ) ) { return 'bricks'; } return apply_filters( 'suiko_builder_of', null, $post ); } /** The text an Elementor page carries in its own data (headings and text widgets), as plain HTML; other builders: the body. */ function suiko_builder_text( $post ) { if ( 'elementor' !== suiko_builder_of( $post ) ) { return wpautop( strip_shortcodes( $post->post_content ) ); } $data = json_decode( (string) get_post_meta( $post->ID, '_elementor_data', true ), true ); $out = array(); $walk = function ( $nodes ) use ( &$walk, &$out ) { foreach ( (array) $nodes as $n ) { if ( ! is_array( $n ) ) { continue; } $s = isset( $n['settings'] ) && is_array( $n['settings'] ) ? $n['settings'] : array(); if ( isset( $n['widgetType'] ) ) { if ( 'heading' === $n['widgetType'] && ! empty( $s['title'] ) ) { $tag = isset( $s['header_size'] ) && preg_match( '/^h[1-6]$/', $s['header_size'] ) ? $s['header_size'] : 'h2'; $out[] = '<' . $tag . '>' . wp_kses_post( $s['title'] ) . ''; } elseif ( in_array( $n['widgetType'], array( 'text-editor', 'theme-post-content' ), true ) && ! empty( $s['editor'] ) ) { $out[] = wp_kses_post( $s['editor'] ); } } if ( ! empty( $n['elements'] ) ) { $walk( $n['elements'] ); } } }; $walk( $data ); return implode( "\n", $out ); }