2017-08-28 7 views
1

Wordpressでは、高度なカスタムフィールドでイベントマネージャを使用しています。Wordpressはショートコード引数としてシリアライズされた配列を読む

私のイベントポストタイプでは、ACFでイメージギャラリーを追加し、イベントマネージャーで作成したイベントリストページに最初のイメージを表示したいとします。私がイベントリストの中でそれを行う唯一の方法は、通常a:1:{i:0;s:4:"6903";}のようなカスタムフィールドから返されたシリアライズされた配列を読み込むショートコードを作成することです。

function unseralLink($atts) { 
    $atts = shortcode_atts(
     array(
      'id' => '', 
     ), $atts, 'unseralizeLink'); 
    if($atts['id']!='') 
     { 
     $mydata = unserialize($atts['id']); 
     $url = wp_get_attachment_image_url($mydata[0]); 
     return "<img src=\"".$url."\" alt=\"\" class=\"attachment-thumbnail size-thumbnail\" />"; 
    } 
} 
add_shortcode('unseralizeLink', 'unseralLink'); 

私は[unseralizeLink id="#_ATT{gallery}"]でショートを呼び出します。しかし、何も返されません。

本当に助けが必要なのは、シリアライズされた配列をshortcode引数として読み込み、それを関数内のローカル変数に格納することです。その後、私は大丈夫になるはずです。

答えて

0

多くの実験の後、私は解決策を見つけました。

function eventImgURL($atts) { 
shortcode_atts(
    array(
     'id' => '', 
    ), $atts); 
    $myvar = unserialize($atts[id]); 
    return wp_get_attachment_image($myvar[0]); 

} 
add_shortcode('unseralizelink', 'eventImgURL'); 

問題の一部は、二重引用符が使用されたときに短いコードで二重引用符を使用してシリアル化された配列を呼び出すことでした。

[unseralizelink id='#_ATT{gallery}'] 
関連する問題