快捷码可以从内容中获取HTML/文本,然后通过添加的HTML返回两次吗?

时间:2016-05-21 作者:DRK

我正在努力减少自己的一些工作,我希望有人知道这是否可行。

这些是设置在滑块中的图像,该滑块在多页文章的下一张幻灯片上显示图像上的文本覆盖。

这就是我想做的。拿着这个:

<h2>Image Title</h2>
[caption]<img src="http">[/caption]
text for slide
并按如下方式输出:

<div class="singe_slide">
<h2>Image Title</h2>
[caption]<img src="http">[/caption]
</div>
<!--nextpage-->
<div class="singe_slide">
<h2>Image Title</h2>  //Same Image Next Page
[caption]<img src="http">[/caption]
<div class="slide_caption"><div class="captExt">
text for slide
</div></div>
<!--nextpage-->
这是我目前使用的短代码,但手动添加div需要同样长的时间,而且非常混乱。看起来是这样的:

[Slide]<h2>Image Title</h2>
[caption]<img src="http">[/caption][/Slide]
<!--nextpage-->
[Slide]<h2>Image Title</h2> //Same Image Next Page
[caption]<img src="http">[/caption]
[SlideCap]text for slide[/SlideCap][/Slide]
<!--nextpage-->
以下是我的两个短代码:

function Slide($atts, $content = null) {
    $content = wpautop(trim($content));
    return \'<div class="singe_slide">\' . do_shortcode($content) . \'</div>\';
}
add_shortcode(\'Slide\', \'Slide\');

function SlideCap($atts, $content = null) {
    $content = wpautop(trim($content));
   return \'<div class="slide_caption"><div class="captExt">\' . do_shortcode($content) . \'</div></div>\';
}
add_shortcode(\'SlideCap\', \'SlideCap\');
我愿意接受关于更简单方法的建议。这是我的第一个短代码,所以我是新手。

是否有可能在短代码之间获取某个变量?这里是这部分

1 个回复
SO网友:AntonChanning

好吧,我想我已经知道你在问什么了。您要问的是,短代码之间的位的变量是什么。如果这就是你要问的,那么答案就是参数变量$content. 您已经在代码中处理了它。

另外,在您的示例中,您似乎有第三个短代码,[caption] 您没有处理的。这是故意的吗?看起来您并不是真的想在中生成最终的html,所以此解决方案假设您不想这样。

我假设您想要的是一种简单易用的短代码格式,例如:

[slide=ImageTitle][slideimg]http://some.domain/slide.jpg[/slideimg][slidecap]This is the caption.[/slidecap][/slide]
然后,您可以通过如下方式简单地调整功能来处理:

function shortcode_slide($atts, $content = null) {
    if(empty($atts)) {
        $img_title=\'\';
    } else {
        // [slide=Title]...[/slide]
        // [slide="Multi word title"]...[/slide]
        $atts = $this->attributefix( $atts );
        $img_title = \'<h2>\'.trim(array_shift($atts),\'="\').\'</h2>\'; //Remove quotes and equals.
    }

    $content = wpautop(trim($content));
    return \'<div class="singe_slide">\'.$img_title. do_shortcode($content) . \'</div>\';
}
add_shortcode(\'slide\', \'shortcode_slide\');

function shortcode_slidecap($atts, $content = null) {
    $content = wpautop(trim($content));
    return \'<div class="slide_caption"><div class="captExt">\' . do_shortcode($content) . \'</div></div>\';
}
add_shortcode(\'slidecap\', \'shortcode_slidecap\');

function shortcode_slideimg($atts, $content = null) {
    $content = wpautop(trim($content));
    return \'<img src="\'.$content.\'" />\';
}
add_shortcode(\'slideimg\', \'shortcode_slideimg\');
这将生成可工作的html。