不带_Content()的自定义帖子字段中的快捷代码

时间:2014-12-12 作者:myol

我创建了一个自定义帖子类型,它不使用the_content() 要在前端显示任何内容,只需使用echo即可。

用户在插件管理后端的文本区域字段中输入数据,CPT执行一些数据操作,所有内容都通过使用短代码的模板文件输出。

当用户将短代码输入后端管理中的CPT文本区域时,我如何获取要触发的短代码。我看不到正在使用任何过滤器。此外,由于它是一个管理区域文本输入字段,php代码片段将无法工作。

EDIT:

也许更好的问题是如何实施the_loop 在自定义帖子中是否正确?当前我的代码;

<?php
/*
Template Name: Article
*/
?>
<article class="article-single">
    <?php 
        echo do_shortcode(\'[banner]\');

        ... loads of shortcodes to build up html...

        echo do_shortcode(\'[info]\');
    ?>
</article>

2 个回复
最合适的回答,由SO网友:myol 整理而成

最后我写了一个基本函数preg_match_allpreg_replace 在为模板页面构建HTML输出之前,查找我的短代码标记并清理内容。

在我的情况下,只有在使用了一个短标记时才有用。

function img_strip($str)
{
    $preg = \'/\\[\\bimg\\b\\](.*?)\\[\\/\\bimg\\b\\]/\';      
    preg_match_all($preg, $str, $matches);  

    if ($matches) {
        foreach ($matches[1] as $match) {

            $parsed = parse_url($match);

            if (empty( $parsed[\'scheme\'])) {
                $match = \'//\' . ltrim($match, \'/\');
            }
            $replace = \'<img src="\' . $match . \'" alt="floating-image" class="image">\';
            $str = preg_replace($preg, $replace, $str, 1);
        }   
    }

return $str;
}
将来,我将研究在模板中使用the_content().

SO网友:karpstrucking

您可以使用do_shortcode() 函数。

echo do_shortcode( \'[your-shortcode including="any" parameters="needed"]\' );

结束

相关推荐

Shortcode won't execute

我用我有限的知识,google和stackexchange创建了一个短代码。但当我加载页面时,它会加载到页面内容上方,并显示为html文本。(shortocode text) ------- page contents appearing normally 正如我所说,我对这种类型的编码知识有限(零),我无法找出哪个部分/什么部分不起作用。我附加了我使用的代码的压缩版本,在shortcode函数中显示的内容更少。// Add Shortcode function p_fo