Wordpress - 如何在执行 1 次短代码后读取 Post HTML 输出

Wordpress - How to read Post HTML output after 1 shortcode execution

我有自定义的 WP 插件,通常会在 Post 中注册一些简码和 运行 它们。 一个 Post 通常有 2 个或更多这样的简码。 我需要查明第一个简码是否已执行并以某种方式更改 Post HTML - 所以第二个和下一个 运行 简码不会替换 HTML第一个简码 运行.

但我不知道怎么做。

我知道,应该通过向 [shortcode first_run="true"] 之类的简码添加一些参数来完成,但这是最后一个可接受的解决方案,因为它需要更改以前生成的简码Post秒。 我知道我不能使用 get_the_content() - 它在短代码 运行 之前显示来自数据库的 Post 内容。 我知道我不能使用 the_content() - 因为它会循环 WP 运行

感谢您的帮助。

我的代码示例(我想它并没有太大帮助,但是..只是想像一下):

function joreviewstable_func( $atts ) {
    
    
    if (is_singular() || is_tag() ) {
            $a = shortcode_atts( array(
            'type' => "",
            'id' => NULL,
            'params' => NULL,
            'limit' => NULL,
            'tablesorter_disable' => NULL,
            'disallow_images' => NULL,
            'product_ids' => NULL,
            'manufacturer' => NULL,
            'manufacturer_serie' => NULL,
            'no_sum' => NULL,
            'custom_order' => NULL,
            'vertical_design' => NULL
        ), $atts );
    
    
        require_once( plugin_dir_path( __FILE__ ) . 'inc/shortcode.php');
    
        $return = jo_reviews_shortcode_generate_table( $a['type'], $a['id'], $a['params'],
                                                        $a['limit'], $a['tablesorter_disable'], $a['disallow_images'],
                                                        $a['product_ids'], $a['manufacturer'], $a['manufacturer_serie'],
                                                        $a['no_sum'], $a['custom_order'], $a['vertical_design'] );
        //$return = "<table><tr><td>data</td></tr></table>";
    
        return $return;
    } else {
      return NULL;
    }
add_shortcode( 'joreviewstable', 'joreviewstable_func' );

jo_reviews_shortcode_generate_table 函数发挥了一些作用,returns html 回到了 joreviewstable_func。

但我不知道如何将已编辑的 Post HTML 包含到 strpos 中。

您可以使用全局变量来完成。

f.e.

function joreviewstable_func( $atts ) {
  global $first_run;
  if(!empty($first_run)) return;
  $first_run=1;
  //REST LINES HERE
}