如何使用`The Loop`之外的post_id处理短代码

时间:2016-05-28 15:55:19

标签: php wordpress

我正在使用postie阅读电子邮件。

我正在使用以下过滤器来处理电子邮件中的关键字并将其转换为wp_postmeta项目。

我的postie_post_before filter

//look for ':keyword attribute:' tags and convert them to '[keyword attribute]'
function filter_content($post) {
    $content = $post['post_content'];
    $length = strlen($content);
    $pos = array(
        'name' => strpos($content, ':name '),
        'cost' => strpos($content, ':cost '),
        'price' => strpos($content, ':price ')
    );
    foreach ($pos as $key => $value) {
        if (false !== $value) {
            $content[$value] = '[';
            $value = strpos($content, ':', $value+1);
            if ( (false !== $value) && (ctype_alnum($content[$value-1])) ) {$content[$value] = ']'; }
        }
    }
    //if there is no name attribute then steal it from the subject line.
    if (strpos($content, '[name ') === false) {
        $content = ' [name ' . $post['post_name'] . '] ' . $content;
    }

    $post['post_content'] = $content;
    return $post;
}

我的postie_post_after filter

function resolve_shorttags($post) {
    $content = $post['post_content'];
    $content = do_shortcode($content);
    $post['post_content'] = $content;
    wp_update_post($post);
    storeDefaults($post['ID']);
    return $post;
}

因为我在do_shortcode之外运行The Loopget_the_ID()不起作用。但是我需要post_id才能使处理正常工作。

如何将我在post_id处理的帖子resolve_shorttags()传递到短标签挂钩?

备注
我知道如果我留下短标签并等待显示时间和循环来处理短标签,这将得到解决,但我想事先处理这些数据。

如果有办法只处理特定的短代码或获取短代码键和属性,我也会很高兴。我可以手动调用处理程序。我不想做的是编写我自己的短代码解析器。

0 个答案:

没有答案