source

do_action 단축 코드가 있는 Visual Composer 그리드가 작동하지 않습니다.

gigabyte 2023. 3. 25. 11:20
반응형

do_action 단축 코드가 있는 Visual Composer 그리드가 작동하지 않습니다.

저는 총체적인 주제를 담은 비주얼 작곡가가 있습니다.에디터의 내 페이지에 다음과 같은 그리드 쇼트 코드를 입력하면 올바르게 동작합니다.

[ vc _ basic _ grid post _ type = " post _ type " max _ type = " 10 " item = " masonry Grid _ Slide From Left " grid _ = " vc _ from left : 14581786639 - 80ebf 3775500c87de 35de 078c3422fe96 - 10 " 분류법 = " 555 "

그러나 do_action을 사용하여 동일한 코드를 호출하면 다음과 같은 javascript 오류가 발생합니다.html 출력을 확인해보니 do_action을 사용하여 숏코드를 에디터에 넣는 것과 같습니다.

오류: 구문 오류, 인식할 수 없는 식: {'status':'아무것도 찾을 수 없습니다.

어떤 도움이라도 대단히 감사합니다.

VC의 핵심 쇼트 코드를 사용하면 템플릿에 직접 콘텐츠를 출력할 수 없습니다.

1. 문제:

VC는 보안을 위해 nonce 외에page_id그리고.shortcode_idAJAX 요청/응답 데이터를 확인합니다.

shortcode_idVC에 의해 자동으로 생성되므로 Harcode 할 수 없습니다.

예를 들어 admin Editor 화면에 표시되는 쇼트코드는 다음과 같습니다.

[vc_basic_grid post_type="post_type" max_items="10" item="masonryGrid_SlideFromLeft" grid_id="vc_gid:1458178666639-80ebf3775500c87d35de078c3422fe96-10" taxonomies="555"]

페이지 ID가 4269라고 하면, 프론트 엔드에서 생성된HTML 코드는 다음과 같습니다.

<!-- vc_grid start -->
<div class="vc_grid-container-wrapper vc_clearfix">
    <div class="vc_grid-container vc_clearfix wpb_content_element vc_masonry_grid" data-initial-loading-animation="zoomIn" data-vc-grid-settings="{"page_id":4269,"style":"all-masonry","action":"vc_get_vc_grid_data","shortcode_id":"1458178666639-80ebf3775500c87d35de078c3422fe96-10","tag":"vc_masonry_grid"}" data-vc-request="http://example.com/wp-admin/admin-ajax.php" data-vc-post-id="4269" data-vc-public-nonce="0641473b09">
    </div>
</div>
<!-- vc_grid end -->

자, 만약page_id그리고.shortcode_id서로 일치하지 않습니다.{'status':'Nothing found - $shorcode_id'}내용이 표시되지 않고 버려집니다.

자세한 내용은 이쪽에서 확인하실 수 있습니다.vc_grid.min.js파일.

2. 솔루션:

  • VC를 사용하여 가짜 페이지를 생성한 후 생성된 HTML 코드를 템플릿파일에 복사합니다.
  • VC를 사용하여 직접 템플릿을 만듭니다.
  • Shorcode Mapper를 사용하여 자체 Shorcode를 만듭니다.

먼저 새 페이지를 만들고 그 위에 그리드 포스트를 추가하면

_vc_post_module

post meta를 새로 구축하여 포스트 메타 데이터를 갱신합니다.다음 코드 "15136284966-37b8c3ca-d8ec-1"은 VC에서 생성된 GUID입니다.이것을 자신의 것으로 변경해야 합니다.

$meta = get_post_meta(1365,'_vc_post_settings');
 $settings = array();
 #$settings['vc_grid_id'] = $meta[0]['vc_grid_id'];
 $key = random_int(1513628284966,9513628284966);
 $settings['vc_grid_id']['shortcodes'][''.$key.'-37b8c3ca-d8ec-1'] = $meta[0]['vc_grid_id']['shortcodes']['1513628284966-37b8c3ca-d8ec-1'];
 $settings['vc_grid_id']['shortcodes'][''.$key.'-37b8c3ca-d8ec-1']['atts']['custom_query'] = "tag=shop";
 $settings['vc_grid_id']['shortcodes'][''.$key.'-37b8c3ca-d8ec-1']['atts']['grid_id'] = ''.$key.'-37b8c3ca-d8ec-1';
$n = add_post_meta(1365,'_vc_post_settings',$settings);


return do_shortcode("[vc_basic_grid post_type=\"custom\" show_filter=\"yes\" filter_style=\"dropdown\" item=\"5959\" grid_id=\"vc_gid:".$key."-37b8c3ca-d8ec-1\" filter_source=\"post_tag\" custom_query='tag=".$tag."']");

해결했어요.
WpBakery https://wpbakery.com/에서 제공하는 Visual Composer Editor에서도 같은 문제가 있었습니다.
그리고 블록의 ID와 Post의 ID와의 연관성을 파악한 후 블록의 설정에 더욱 주의를 기울였습니다.

"Element ID"라는 필드가 하나 있는데, 편집 중인 포스트의 ID를 여기에 입력해야 합니다.

내 경우 블록은 포스트가 들어 있는 블록이었다.

여기에 이미지 설명 입력

저장 후 Editor를 사용하지 않고 페이지를 본 후, 나는 마침내 메시지가 아닌 블록을 볼 수 있었다.

{"status":"Nothing found"}

나는 이 문제에 대한 해결책을 찾았다.woocommerce 카테고리 템플릿을 수정하고 woocommerce_archive_description 후크에 링크하여 일부 페이지에서 설명을 추가했습니다.이것에 의해, ID 를 취득해 내용을 표시합니다.

echo do_shortcode($post->post_content);

페이지 ID와 쇼트코드 ID가 일치하지 않아 갤러리(미디어 그리드)가 작동하지 않았습니다.따라서 논리적인 해결책은 글로벌 변수 $post를 내용을 가져오는 페이지의 $post로 재정의하는 것이었습니다.

global $post;
$post = get_post( $id );

그리고 그 게시물 ID가 일치한다는 것이 밝혀졌습니다.

그 후 일반 $post 값을 반환하는 것을 잊지 마십시오.

wp_reset_postdata();

덧붙여서 - 이 옵션을 사용하여 wpbakery 요소의 사용자 지정 스타일을 로드합니다.

echo '<style type="text/css" data-type="vc_shortcodes-custom-css">' . get_post_meta( $id, '_wpb_shortcodes_custom_css', true ) . '</style>';

전체 코드

function extra_product_category_desc(){
    if( is_product_category() ){
        $id = get_term_meta (get_queried_object()->term_id, 'pageId', true);
        if($id !== ''){
            global $post;
            $post = get_post( $id );
            echo do_shortcode($post->post_content);
            echo '<style type="text/css" data-type="vc_shortcodes-custom-css">' . get_post_meta( $id, '_wpb_shortcodes_custom_css', true ) . '</style>';
            wp_reset_postdata();
        }
    }
}
add_action( 'woocommerce_archive_description', 'extra_product_category_desc', 11 );

do_shortcode('')를 사용하여 시도할 수도 있습니다.

맘에 들다

do_shortcode [ [ vc _ basic _ grid post _ type = " post _ type " max _ Slide From Left " grid _ id = " vc _ scrities : 1458178666639 - 80ebf375500c87de 35 de078c3422fe96 - 10 " templys = " 555 " ) ;

안부 전합니다,

언급URL : https://stackoverflow.com/questions/36062447/visual-composer-grid-with-do-action-shortcode-is-not-working

반응형