静态变量循环在WordPress中不起作用

时间:2016-09-15 作者:danny471

我的wordpress主题中有一个功能,可以删除视频帖子中的第一个嵌入视频。请参见下面的代码。这在函数中。php文件。

/* - function that hides first video in post content - */

function process_embed( $embed ){

    if ( is_single() && get_post_format() === \'video\' ) {
        static $post_video_num = 0;

        $post_video_num++;

        // Hide first video in the post content on single video post page
        if ( 1 === $post_video_num ) {
            return \'\';
        }
    }

    return $embed;
}


add_filter( \'embed_oembed_html\', \'process_embed\', 10, 3 );
add_filter( \'video_embed_html\', \'process_embed\' ); // Jetpack
如您所见,如果文章是一篇单独的文章,并且是一种视频格式,那么每次视频出现在文章中时,它都会声明一个静态变量并对其进行迭代。如果静态变量$post_video_num 是1(表示文章中的第一个视频),它将替换为空白,删除第一个嵌入的视频。

This code works fine in my development environment on my local machine. However, it doesn\'t seem to work on my live server. 这就是问题所在。

当我调试时,在回显$post_video_num 变量,我发现它不会删除第一个视频,因为变量$post_video_num 是8(而不是应该的1)。

在发出$post_video_num 数字,所发生的事情是,它在页面顶部回显数字1-8,然后在第一个视频应该在的位置回显8-12。特别是在实时服务器上,该函数似乎会循环多次,这就是它不起作用的原因。

让我困惑的核心问题是,这个函数在本地机器上按预期工作,但在实时服务器上却不工作,因为它会执行这种奇怪的循环操作,我无法解释。

是什么导致此功能在我的本地计算机上工作而不是在实时服务器上工作?这里有我遗漏的东西吗?

谢谢我希望这是有意义的。非常感谢你的帮助。

1 个回复
SO网友:sumonst21

尝试以下操作:

function realistic_get_first_embed_video($post_id)
 {
     $post = get_post($post_id);
     $content = do_shortcode(apply_filters(\'the_content\', $post->post_content));
     $embeds = get_media_embedded_in_content($content);
     if (!empty($embeds)) {
         //check what is the first embed containg video tag, youtube or vimeo
         $counter = 0;
         foreach ($embeds as $embed) {
            // Check condition if count is 0 then 
            // it is the first iteration
            if( $counter == 0 ) {
                return \'\';
            }

             /*
             if (strpos($embed, \'video\') || strpos($embed, \'youtube\') || strpos($embed, \'vimeo\') || strpos($embed, \'dailymotion\') || strpos($embed, \'vine\') || strpos($embed, \'wordPress.tv\') || strpos($embed, \'hulu\')) {
                 return $embed;
             }
             */
            $counter = $counter + 1;
         }
     } else {
         //No video embedded found
         return;
     }
 }