2016-05-26 2 views
0

テーマ設定ページにwysiwygエディタがあります。私は内部に属性を持つショートコードを使いたい。ショートコード属性がページ外/ポストエディタ外で動作していません

これは一例として使用するために、属性を持つショートコードのいずれかです。

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

+0

$ attsと$ contentの変数は何ですか? –

答えて

0

は最終的に私は解決策を見つけました:)

あなたが@Poizと言ったように、ほぼすべてのコードはOKでしたが、印刷する時点で少し変更を加えました。ここで解決策は:

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

私は同じ時間をかけずに別々にストライプする必要があります。なぜか分からない...しかし、それは働く! :)

0

あなたのコードはきれいです...また、なぜショートコード属性の名前にタイプミスがある場合を除いて、これが結果になるのかわかりません。その間、paddingtop属性を "PADDINGTOP"の代わりに40pxのデフォルト値に設定してください。そして、Attributesの値を変更して実験してください。

<?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'); 

別のアプローチは、(あなたがに対処するための1つの属性のみを持っているので)抽出機能を削除し、そのように手動で自分で抽出を行うことが考えられます。

 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'); 
+0

ポイズありがとう、間違いはありません、私はダブルチェックしました。私が40pxのようなデフォルト値を設定してもうまくいきますが、それを変更できる必要があります。 ところで、抽出機能を削除することはできません。私は複数の属性を持つ多くのショートコードを持っており、すべて同じ問題を抱えています。 –

+0

@FredericGarciaまさに目標です。あなたの属性を使用してショートコード内の値を変更できるようにすることです。 2番目の選択肢を試しましたか?パディングトップを80pxに変更して、結果に反映されているかどうかを確認することができます。 – Poiz

+0

申し訳ありませんPoiz私は勘違いしました。私はちょうどそれをした、そして今私はテキストエディタの値の代わりにデフォルト値を取得します。 –

関連する問題