在插件中剥离Wordpress短代码

时间:2013-10-27 18:14:47

标签: php regex wordpress

我正在使用OnlyWire插件将WordPress中的帖子联合到各种网络。不幸的是,他们忘了在插件中添加strip_shortcodes功能。

我正在使用VisualComposer来格式化我的帖子,这些帖子使用大量的短代码来添加帖子内容的结构。然后,当我发布到OnlyWire时,我最终得到了所有短代码。

我已经尝试了几个我在这里和其他地方找到的例子,但我似乎无法让strip_shortcodes函数重新呈现剥离版本。

这是他们的帖子功能:

function ow_post($postID)
{
    global $wpdb;

    // Get the correct post ID if revision.
    if ($wpdb->get_var("SELECT post_type FROM $wpdb->posts WHERE ID=$postID") == 'revision')
    {
        $postID = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID=$postID");
    }

    if (isset($_POST['ow_post']) && $_POST['ow_post'] == 'on')
    {
        // the checkbox is selected, let's post to onlywire with user credentials
        $username = get_option('ow_username');
        $password = get_option('ow_password');
        if ($username && $password)
        {

            $post      = get_post($postID);
            $tagstring = "";
            $prefix    = '';

            if(get_the_tags($post->ID))
            {
            foreach (get_the_tags($post->ID) as $tag)
            {
                $tagstring .= $prefix.str_replace(" ","-",trim($tag->name));
                $prefix = ',';
            }
            }

            $d                   = 'm\/d\/Y h\:i\:s T';
            $data['url']         = urlencode(get_permalink($postID));
            $data['title']       = trim(urlencode($post->post_title));
            $data['tags']        = trim($tagstring);
            $data['scheduled']   = urlencode(get_post_time($d, true, $post, false));


            if (strlen(strip_tags($post->post_content)) > 250)
            {
                $data['description'] = urlencode(substr(strip_tags($post->post_content), 0, 250) . " ...");
            }
        else
        {
        $data['description'] = urlencode(strip_tags($post->post_content));
        }   


            if (get_option('ow_service_logins') != false)
            {
                $data['networks'] = trim(get_option('ow_service_logins'));
            }

            createBookmark($data, $username, $password);
        }
    }
}

我创建了一个回调:

function ow_strip_shortcodes ( $content ) {
    $content = strip_shortcodes( $content );
    return $content;
}

并尝试添加过滤器,如下所示:

$post      = get_post($postID);
$tagstring = "";
$prefix    = '';

apply_filters('the_content', 'ow_strip_shortcodes');

但这似乎不起作用......

我确信这很简单,但我在Wordpress上的工作量不大,所以我不太了解结构。

- 编辑 -

除此之外,我发现strip_shortcodes正在运行,但我的内容嵌套在短代码中,因此它也被剥离了。

有人可以帮助一个正则表达式来替换括号内的所有实例及其中的内容,但保留纯文本吗?

以下是部分帖子的示例:

[vc_row][vc_column width="1/1"][vc_column_text] Introductory text goes in this block
[/vc_column_text][/vc_column][/vc_row] 

需要删除[vc_*][/vc_*]的所有实例,只留下Introductory text goes in this block

0 个答案:

没有答案