2016-09-07 10 views
0

こんにちは私は異なるパラメータを持つが同じ共通関数を持つ2つの関数を作成したいと思います。ここに私の例です...他の関数から呼び出される一般的なphp関数

共通機能:

function my_responsive_pictures($post_id){ 
// Get alt text or set the $alt_text variable to the post title if no alt text exists 
$alt_text = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); 
if (!$alt_text) { $alt_text = esc_html(get_the_title($post_id)); } 

// Get the info for each image size including the original (full) 
$thumb_original = wp_get_attachment_image_src($attachment_id, 'slideshow'); 
$thumb_large = wp_get_attachment_image_src($attachment_id, 'slideshow-lg'); 
$thumb_medium = wp_get_attachment_image_src($attachment_id, 'slideshow-md'); 
$thumb_small = wp_get_attachment_image_src($attachment_id, 'slideshow-xs'); 

// Create array containing each image size + the alt tag 
$thumb_data = array(
'thumb_original' => $thumb_original[0], 
'thumb_large' => $thumb_large[0], 
'thumb_medium' => $thumb_medium[0], 
'thumb_small' => $thumb_small[0], 
'thumb_alt'  => $alt_text 
); 

// Echo out <picture> element based on code from above 
echo '<picture>'; 
echo '<!--[if IE 9]><video style="display: none;"><![endif]-->'; // Fallback to <video> element for IE9 
echo '<source srcset="' . $thumb_data['thumb_large'] . ', ' . $thumb_data['thumb_original'] . ' x2" media="(min-width: 800px)">'; 
echo '<source srcset="' . $thumb_data['thumb_medium'] . ', ' . $thumb_data['thumb_large'] . ' x2" media="(min-width: 400px)">'; 
echo '<source srcset="' . $thumb_data['thumb_small'] . ', ' . $thumb_data['thumb_medium'] . ' x2">'; 
echo '<!--[if IE 9]></video><![endif]-->'; // Fallback to <video> element for IE9 
echo '<img srcset="' . $thumb_data['thumb_small'] . ', ' . $thumb_data['thumb_medium'] . ' x2" alt="' . $thumb_data['thumb_alt'] . '">'; 
echo '</picture>'; 
} 

共通関数を呼び出すもう1:

function my_responsive_thumbnail($post_id){ 
// Get the featured image ID 
$attachment_id = get_post_thumbnail_id($post_id); 
my_responsive_pictures(); 
} 

及びその他のパラメータ$ attachment_IDを有する第二1:

function my_responsive_acfthumbnail($post_id){ 
// Get the featured image ID 
$attachment_id = get_field('image_bandeau'); 
my_responsive_pictures(); 
} 

何も起こりません:(何が間違っていますか?Thanx、あなたの助けに...

+0

機能は、同じファイル内にありますか?あなたは必要なパラメータも逃してしまいます。 – stuzzo

答えて

0

あなたの関数は、パラメータを期待している、とあなたは

my_responsive_pictures(); 

ここでそれを呼び出しているとき、あなたは何を渡していません。

my_responsive_thumbnail()関数を呼び出してから、後続の「共通」関数を呼び出す必要があります。

0

このコードにはいくつか問題があります。最初に見なければならないのは主な機能です。

function my_responsive_pictures($post_id){ 

あなたの関数の定義は、したがって、それはあなたが関数を呼び出す任意の時間を要しています$post_idデフォルト値を与えるものではありません。引数を渡さずに関数を呼び出すと、エラーが発生します。ここで

$alt_text = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); 
if (!$alt_text) { $alt_text = esc_html(get_the_title($post_id)); } 

あなたが設定されていない$attachment_idに言及しています。それが見つからないときは、あなたはその投稿のタイトルを取得しています。

これを機能させるには、関数の2つのパラメータを設定する必要があります。

function my_responsive_pictures($attachment_id, $post_id) { 

我々は$attachment_id(画像のID)と$post_id(ポストのID)に渡す必要があり、この関数を呼び出し、任意の時間。

次に、最終的にmain関数を呼び出す関数を変更する必要があります。

function my_responsive_thumbnail($post_id) { 
    // Get the featured image ID 
    $attachment_id = get_post_thumbnail_id($post_id); 

    // Now that we have the featured image ID, we really ought 
    // to do some error checking. Let's assume that all went well. 
    my_responsive_pictures($attachment_id, $post_id); 
} 

この次の関数は、もっと注意が必要です。ポストIDでこれらの関数を呼び出していることに注意してください。 get_field()に画像を取得する投稿のIDを知らせる必要があります。

function my_responsive_acfthumbnail($post_id) { 
    // Get the featured image ID 
    $attachment_id = get_field('image_bandeau', $post_id); 
    my_responsive_pictures($attachment_id, $post_id); 
} 

使用例:

my_responsive_acfthumbnail(get_the_ID()); 

はまた、あなたは現在のポストあなた」のイメージを取得するときにそれを渡す必要はありませんので、ポストIDのデフォルトを設定することを検討することをお勧めします再視聴。

最後に、my_responsive_picturesを呼び出す関数間の重複のレベルを考えます。添付ファイルのIDが有効であることをチェックして、関数が1行だけ異なって大きくなる可能性が高いことを確認します。 get_field()

詳しい情報:https://www.advancedcustomfields.com/resources/get_field/

関連する問題