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_id
AJAX 요청/응답 데이터를 확인합니다.
그shortcode_id
VC에 의해 자동으로 생성되므로 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
'source' 카테고리의 다른 글
Wordpress에서 사용자 지정 페이지 표시 Permalink를 만드는 방법 (0) | 2023.03.25 |
---|---|
AngularJs가 컨트롤러($scope)의 양식 개체에 액세스할 수 없습니다. (0) | 2023.03.25 |
Spring Tool Suite IDE에서 프로젝트를 다시 도입하려고 할 때 8080 포트가 이미 문제가 발생함 (0) | 2023.03.25 |
가장 쉬운 각도 통과 방법지시어에서 컨트롤러로의 JS 범위 변수 (0) | 2023.03.25 |
파일 또는 어셈블리 시스템을 로드할 수 없습니다.Web.Http.Web Host는 Azure 웹 사이트에 게시된 후 (0) | 2023.03.20 |