短代码属性不在页面/帖子编辑器之外

时间:2016-05-26 11:35:27

标签: php wordpress

我有一个带有所见即所得编辑器的主题设置页面。我想使用内部属性的短代码。

这是具有属性的短代码之一,用作示例:

function row( $atts, $content = null ) {
  extract(shortcode_atts(
    array(
    'paddingtop' => 'PADDINGTOP',
    ), $atts )
  );
  return '<div class="row" style="padding-top:'.$paddingtop.';"></div>';
}
add_shortcode( 'fila', 'row');

在这里,我将wysiwyg编辑器添加到我的主题设置页面:

array(
  'name'  => '',
  'id'    => 'editor_top_shop',
  'type'  => 'editor',
  'note'  => '',
),

这是我在编辑器中检查和打印内容的方式:

<?php if ( get_option( 'editor_top_shop' ) == true ) {

    $top_shop = get_option( 'editor_top_shop' );
    echo stripslashes(apply_filters("the_content", $top_shop));

<?php } ?>

编辑器中的短代码:

[fila paddingtop="40px"]

最后,这是HTML输出:

<div class="row" style="padding-top:PADDINGTOP;"></div>

我很感激一些反馈,我对此感到生气:(

非常感谢! 家Frede

2 个答案:

答案 0 :(得分:0)

你的代码很干净......我也不明白为什么这应该是结果,除非你的短代码属性名称有拼写错误。同时,尝试将paddingtop属性设置为默认值40px而不是&#34; PADDINGTOP&#34;。然后尝试更改属性的值。

    <?php
        function row( $atts, $content = null ) {
            extract(shortcode_atts(
                    array(
                        'paddingtop' => '40px', /*<== DOESN'T MATTER BUT TRY DEFAULTING THIS TO 40px */
                    ), $atts )
            );
            return '<div class="row" style="padding-top:'. $paddingtop .';"></div>';
        }
        add_shortcode( 'fila', 'row');

另一种方法可能是删除提取功能(因为你只有一个属性可以处理)并自己手动提取:

        function row( $atts, $content = null ) {
            $paddingTop   = isset($atts['paddingtop']) ? $atts['paddingtop'] : "40px";
            return '<div class="row" style="padding-top:'. $paddingTop .';"></div>';
        }
        add_shortcode( 'fila', 'row');

答案 1 :(得分:0)

最后我找到了一个解决方案:)

正如你所说@Poiz,几乎所有的代码都没问题,但我在打印时做了一些改动。这是解决方案:

$top_shop = get_option( 'ace_top_shop' );
$top_shop = stripslashes($top_shop);
echo (apply_filters("the_content", $top_shop));

我必须单独进行脱片而不是同时进行。不知道为什么......但它的工作原理! :)