我有Woocommerce(订阅)和Elementor。我正在尝试在Woocommerce的Myaccount区域中添加页面/内容-新的导航菜单项。
创建端点和导航菜单位可以正常工作。我面临的问题是显示在elementor中创建的页面。一页(也是在elementor中创建的)可以正常工作,而另一页则不能。
在elementor中创建的页面相当简单,实际上创建了4列10行。每行中都有一个按钮,该按钮使用短代码来获取按钮文本和被按下时可导航到的URL。所有这些都经过测试,并且在直接访问页面时不会出现问题。
如果我使用此代码
$post = get_post(1114);
$content = apply_filters('the_content', $post->post_content);
echo $content;
在端点上的以显示页面,输出只是文本行的列表,从左到右显示表格单元格。这仅显示按钮文本(没有URL的符号),并且无论如何都不会像元素或编辑器中的页面一样格式化(或如果直接访问) 例如,如果表格是
H1 H2 H3 H4
R1a R1b R1c R1d
R2a R2b R2d R2d
显示为
H1
H2
H3
R1a
R1b
R1c
R1d
R2a
R2b
R2c
R2d
如果我使用下面的代码
$content = \Elementor\Plugin::$instance->frontend->get_builder_content_for_display( 1119);
echo $content;
该表在很大程度上显示了所有格式等内容。不起作用的一件事是按钮文本。代替显示短代码返回的文本,它只显示短代码。
我确定我只是缺少需要在某个地方处理的内容,但我不知道它是什么,不幸的是,Elementor页面并没有提供太多内容。
任何帮助将不胜感激。
答案 0 :(得分:0)
编辑:正确的答案是,在我之前没有注意到的文本字段旁边有一个动态按钮/下拉菜单。使用此功能,您可以选择简码并输入简码详细信息,它将无需手动处理即可正确显示。
不确定最初为什么不能像上面那样正确加载,但是为了解决它,我做了下面的事情。不确定这是执行此操作的正确方法,但是它可以工作。
$content = \Elementor\Plugin::$instance->frontend->get_builder_content_for_display( 1013 );
$content = process_subswitch_content_for_shortcodes( $content );
echo $content;
以下内容实质上是从get_builder_content_for_display
函数返回的内容中搜索“ [subswitch””,这是所讨论的短代码的开头(无法仅将元素搜索为[]或将其他[]放入内容中)。
function process_subswitch_content_for_shortcodes( $content ) {
$keepprocessing = true;
$searchstart_pos = 0;
do {
$startchar_pos = strpos( $content, "[subswitch", $searchstart_pos );
if ( $startchar_pos == false ) {
$keepprocessing = false;
}
$endchar_pos = strpos( $content, "]", $startchar_pos );
$shortcode_request = substr( $content, $startchar_pos, $endchar_pos );
if ( $shortcode_request == false ) {
$keepprocessing = false;
}
$shortcode_content = do_shortcode( $shortcode_request );
$content = str_replace( $shortcode_request, $shortcode_content, $content );
$searchstart_pos = $endchar_pos;
} while ( $keepprocessing );
return $content;
}
我当然仍然想知道直接加载它的方法,以便它显示而不必手动处理短代码。