在 Woocommerce 我的帐户中向客户显示 Elementor 页面
Display Elementor page to customer in Woocommerce My-Account
我有 Woocommerce(订阅)和 Elementor。我正在尝试在 Woocommerce 的 Myaccount 区域内添加一个 page/content - 新的导航菜单项。
创建端点和导航菜单位没有问题。我面临的问题是显示在 elementor 中创建的页面。一个页面(也是在 elementor 中创建的)没有问题,而另一个没有。
在 elementor 中创建的页面相当简单,基本上创建 4 列,10 行。在每一行中都有一个按钮,它使用短代码来获取按钮文本和 url 在按下时导航到。这一切都经过测试,直接访问页面时没有问题。
如果我使用这个代码
$post = get_post(1114);
$content = apply_filters('the_content', $post->post_content);
echo $content;
在端点上显示页面,输出只是一个文本行列表,从左到右显示 table 个单元格。这只显示按钮文本(没有 URL 的符号)并且没有像 elementor 编辑器中的页面那样格式化(或者如果直接访问)
例如,如果 table 是
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;
table 基本上可以正确显示所有格式等。唯一不起作用的是按钮文本。它不显示简码返回的文本,而是只显示简码。
我确定我只是遗漏了一些需要在某处处理的东西,但我不知道它是什么,不幸的是,Elementor 页面并没有提供太多信息。
如有任何帮助,我们将不胜感激。
编辑:正确答案是文本字段旁边有一个我之前没有注意到的动态 button/dropdown。使用它,您可以 select 简码并输入简码详细信息,它会正确显示,而无需手动处理。
不确定为什么它首先不能像上面那样正确加载,但为了绕过它我做了下面的操作。不确定这是执行此操作的正确方法,但它有效。
$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”,这是相关短代码的开头(不能只搜索 ],因为 elementor 将其他 [] 放在内容中).
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;
}
我当然还是想知道直接加载它的方式,这样它就可以显示而无需手动处理短代码。
我有 Woocommerce(订阅)和 Elementor。我正在尝试在 Woocommerce 的 Myaccount 区域内添加一个 page/content - 新的导航菜单项。
创建端点和导航菜单位没有问题。我面临的问题是显示在 elementor 中创建的页面。一个页面(也是在 elementor 中创建的)没有问题,而另一个没有。
在 elementor 中创建的页面相当简单,基本上创建 4 列,10 行。在每一行中都有一个按钮,它使用短代码来获取按钮文本和 url 在按下时导航到。这一切都经过测试,直接访问页面时没有问题。
如果我使用这个代码
$post = get_post(1114);
$content = apply_filters('the_content', $post->post_content);
echo $content;
在端点上显示页面,输出只是一个文本行列表,从左到右显示 table 个单元格。这只显示按钮文本(没有 URL 的符号)并且没有像 elementor 编辑器中的页面那样格式化(或者如果直接访问) 例如,如果 table 是
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;
table 基本上可以正确显示所有格式等。唯一不起作用的是按钮文本。它不显示简码返回的文本,而是只显示简码。
我确定我只是遗漏了一些需要在某处处理的东西,但我不知道它是什么,不幸的是,Elementor 页面并没有提供太多信息。
如有任何帮助,我们将不胜感激。
编辑:正确答案是文本字段旁边有一个我之前没有注意到的动态 button/dropdown。使用它,您可以 select 简码并输入简码详细信息,它会正确显示,而无需手动处理。
不确定为什么它首先不能像上面那样正确加载,但为了绕过它我做了下面的操作。不确定这是执行此操作的正确方法,但它有效。
$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”,这是相关短代码的开头(不能只搜索 ],因为 elementor 将其他 [] 放在内容中).
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;
}
我当然还是想知道直接加载它的方式,这样它就可以显示而无需手动处理短代码。