繁体   English   中英

当以HTML换行时,Wordpress简码不起作用

[英]Wordpress shortcode does not work when its wrapped in HTML

我创建了包含HTML元素(例如<div><ul> Wordpress页面,例如

<div id="main" class="large-12 medium-12 columns clearfix" role="main">
  <h2 class="press-list-header">Articles</h2>
    <ul class="press-list">

    </ul>
</div> 

我想在这些HTML元素中放置短代码,如下所示:

<div id="main" class="large-12 medium-12 columns clearfix" role="main">
  <h2 class="press-list-header">Articles</h2>
    <ul class="press-list">
[picture image="http://example.com/image1.jpg" thumbnail="http://example.com/image1-thumbnail.jpg"]
[picture image="http://example.com/image2.jpg" thumbnail="http://example.com/image2-thumbnail.jpg"]
[picture image="http://example.com/image3.jpg" thumbnail="http://example.com/image3-thumbnail.jpg"]
    </ul>
</div> 

当我这样做时,短代码只是在呈现的页面上显示为常规文本。 如果我只是将短代码放在HTML元素之外,则它们可以正确地将所需内容呈现到页面上。

如何获取我的短代码以将其内容包装在HTML元素中?

更新

我本来应该更具描述性。 我想让我的客户很容易在TinyMCE编辑器中为页面和帖子添加一小段代码。 我不希望他们不得不处理php或html代码。 由于他们不是开发人员,因此他们将.php无法访问这些.php模板文件。 我已经获得了简短的代码,仅适用于帖子而不适用于页面。 我相信这样做的原因是我在所有页面上都使用了名为custom-page.php的模板,如下所示:

<?php /* Template Name: Custom */ ?>
<?php get_header(); ?>

  <div id="content">        
    <div id="inner-content" class="row clearfix">

      <?php the_post(); global $post; echo $post->post_content; ?>

    </div> <!-- end #inner-content -->
  </div> <!-- end #content -->

<?php get_footer(); ?>

我确定问题出在线

<?php the_post(); global $post; echo $post->post_content; ?>

由于某种原因,它只是呈现短代码文本。 它不允许短代码运行并呈现预期的内容。 如何重写此行以使短代码正确执行?

您正在寻找do_shortcode()

<?php echo do_shortcode("[shortcode]"); ?>

因此,在您的模板中,它将如下所示:

<div id="main" class="large-12 medium-12 columns clearfix" role="main">
  <h2 class="press-list-header">Articles</h2>
    <ul class="press-list">
<?php echo do_shortcode("[picture image=\"http://example.com/image1.jpg\" thumbnail=\"http://example.com/image1-thumbnail.jpg\"]"); ?>
<?php echo do_shortcode("[picture image=\"http://example.com/image2.jpg\" thumbnail=\"http://example.com/image2-thumbnail.jpg\"]"); ?>
<?php echo do_shortcode("[picture image=\"http://example.com/image3.jpg\" thumbnail=\"http://example.com/image3-thumbnail.jpg\"]"); ?>
    </ul>
</div>

在您的UPDATE中添加do_shortcode函数仍然是do_shortcode的方法:

<?php the_post(); global $post; echo do_shortcode($post->post_content); ?>

你需要这样

<?php 
echo do_shortcode("[picture image='http://example.com/image1.jpg' thumbnail='http://example.com/image1-thumbnail.jpg']"); 
?>
 <?php echo do_shortcode('<div id="main" class="large-12 medium-12 columns clearfix"   role="main">
 <h2 class="press-list-header">Articles</h2>
 <ul class="press-list">
 [picture image="http://example.com/image1.jpg" thumbnail="http://example.com/image1-thumbnail.jpg"]
 [picture image="http://example.com/image2.jpg" thumbnail="http://example.com/image2-thumbnail.jpg"]
 [picture image="http://example.com/image3.jpg" thumbnail="http://example.com/image3-thumbnail.jpg"]
 </ul>
</div>');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM