如何从自定义元字段获得工作的短码

时间:2014-10-31 作者:rikardo85

我为页面创建了一个简单的文本自定义元字段。我可以成功地输入在网站前端打印的纯文本,没有问题。

我还想添加短代码。如果我在字段中添加一个短代码,短代码将以纯文本形式打印到前端。

我使用的代码:

<?php $meta = get_post_meta($post->ID, \'intSlider\', true); ?>
   <div id="sliderWrap">
     <div id="slider" class="floatLeft">
        <? echo $meta; ?>
     </div>
   </div>
我研究过使用以下代码,但运气不太好:

<?php echo ( do_shortcode( get_post_meta( $post->ID , \'intSlider\' , true ) ) ); ?>
非常感谢您的帮助

谢谢

2 个回复
SO网友:André Gumieri

您可以使用“the\\u content”筛选器来完成此操作。这样,Wordpress会将内容视为来自编辑器字段,并执行所有短代码:

<?php $meta = get_post_meta($post->ID, \'intSlider\', true); ?>
<div id="sliderWrap">
    <div id="slider" class="floatLeft">
        <? echo apply_filters(\'the_content\', $meta); ?>
    </div>
</div>
只是要小心,因为它会将内容包裹在P标记周围。要解决此问题,您可以进行简单的替换以将其删除:

...
<?php
    $content = apply_filters(\'the_content\', $meta);
    $content = str_replace(array(\'<p>\', \'</p>\'), \'\', $content);
?>
...
希望有帮助:)

SO网友:Welcher

看起来你已经拥有了完成这项工作所需的所有部件-你只需要将它们连接起来。请尝试下面的代码段

/**
 * get_post_meta returns either the value of the custom field or false
 * so we need to be sure we have the string before trying to output the shortcode
 */

$meta = get_post_meta($post->ID, \'intSlider\', true);
?>
<div id="sliderWrap">
  <div id="slider" class="floatLeft">
    <?php
    //this will just echo the value saved
    // -- echo $meta;

    // this should render the shortcode if available - as long asthe $meta has the square brackets i.e [shortcode-name]
    if( $meta ) {
      echo do_shortcode( $meta );
    }else{
      //this is just in place for debugging
      echo \'$meta was empty\';
    }
    ?>
</div>

结束

相关推荐

OOP and WordPress shortcode

我试图通过这种方式添加一个短代码class MyPlugin { function __construct() { $this->make_shortcode(); } function ShowMsg($cls, $lst4) { $data = shortcode_atts(array(\'phn\' => \'\', \'msg\' => \'\'), $atts);