• 12-08-2019, 14:18:14
    #1
    Merhabalar 72. satır sebebiyle


    Şeklinde bir hata alıyorum.

    İlgili kodlar:

    <?php
    
    $lisans = get_field('lisans_durumu_sec');
    if(isset($lisans)){
    $goodDevices = ['ucretsiz','freemium','ucretli'];
    
    foreach ($goodDevices as $device){
    if(in_array($device,$lisans)){
    $catchModulem = CatchModulem($device);
    echo $catchModulem;
    }
    }
    
    }
    function CatchModulem($lisans){
    switch($lisans){
    case 'ucretsiz':
    return '<span class="licence premium-bg">Ücretsiz</span>';
    break;
    case 'freemium':
    return '<span class="licence premium-bg">Freemium</span>';
    break;
    case 'ucretli':
    return '<span class="licence paid-bg">Ücretli</span>';
    break;
    default:
    return "";
    break;
    }
    }
    
    ?>
    72. satıra denk gelen kod:

            if(in_array($device,$lisans)){
    problemi nasıl giderebilirim acaba?
  • 12-08-2019, 14:24:22
    #2
    Selamlar,

    Parametre olarak dizi belirtmek yerine metin belirttiğiniz için böyle bir hata alıyorsunuz, $lisans değişkenin türü muhtemelen dizi değil, kontrol edebilir misiniz?
  • 12-08-2019, 14:41:45
    #3
    truser adlı üyeden alıntı: mesajı görüntüle
    Selamlar,

    Parametre olarak dizi belirtmek yerine metin belirttiğiniz için böyle bir hata alıyorsunuz, $lisans değişkenin türü muhtemelen dizi değil, kontrol edebilir misiniz?
    Merhabalar hocam öncelikle hayırlı bayramlar dilerim.
    Peki bu kodu dizi değil değer olarak revize etmenin bir ihtimali var mıdır?

    Dizi olarak atadığım zaman haklısınız sorunun çözüldüğünü görüyorum.

    Fakat single.php dosyasının başka bir kısmında yine aynıkodu uygulayarak çıktı aldığımda dizi şeklinde değil değer olarak çıktı almam gerekiyor fakat öyle olmuyor.
    Daha net anlamanız için şu şekilde ifade edeyim:

    <?php
     
    $lisans = get_field('lisans_durumu_sec');
    if(isset($lisans)){
    $goodDevices = ['ucretsiz','freemium','ucretli'];
     
    foreach ($goodDevices as $device){
    if(in_array($device,$lisans)){
    $catchModulem = CatchModulem($device);
    echo $catchModulem;
    }
    }
     
    }
    function CatchModulem($lisans){
    switch($lisans){
    case 'ucretsiz':
    return '<span class="licence premium-bg">Ücretsiz</span>';
    break;
    case 'freemium':
    return '<span class="licence premium-bg">Freemium</span>';
    break;
    case 'ucretli':
    return '<span class="licence paid-bg">Ücretli</span>';
    break;
    default:
    return "";
    break;
    }
    }
     
    ?>
    Kodunu uyguladığımız zaman ve dizi şeklinde işaretlediğim zaman sorunsuz bir şekilde "Ücretsiz, Ücretli veya Freemium şeklinde çıktı alıyorum bu kısımda.

    Fakat başka bir alanda "benzer yazılar" kısmında da bu çıktıyı almam için şu şekilde bir kodum mevcut:

    <?php
    global $related;
    $rel = $related->show( get_the_ID(), true );
     
    // Display the title and excerpt of each related post
    if( is_array( $rel ) && count( $rel ) > 0 ) {
    foreach ( $rel as $r ) {
    if ( is_object( $r ) ) {
    if ($r->post_status != 'trash') {
    setup_postdata( $r );
    echo '<div class="box-row">';
    echo '<div class="icon-wrapper"><a href="'.get_permalink( $r->ID ).'"><img src="'.get_the_post_thumbnail_url( $r->ID ).'" width="80" alt="'. get_the_post_thumbnail_caption( $r->ID ) .'"></a></div>';
    echo '<div class="text">';
    echo '<span class="licence free-bg float-right">'.the_field('lisans_durumu_sec', $r->ID ).'</span>';
    echo '<h3 class="title" id="'.get_the_title( $r->ID ).'"><a href="'.the_permalink( $r->ID ).'">'.get_the_title( $r->ID ).'</a></h3>';
    echo '<p>'.the_excerpt().'</p>';
    echo '<div class="action"><a class="more-info float-right button-new" href="'.get_permalink( $r->ID ).'">Detayları Göster</a>';
    if(function_exists('the_ratings')) { echo the_ratings(); };
    echo '<div class="clear"></div>';
    echo '</div>';
    echo '</div>';
    echo '<div class="clear"></div>';
    echo '</div>';
    }
    }
    }
    wp_reset_postdata();
    }
    ?>
    Bu kodun 14. satırındaki:

    echo '<span class="licence free-bg float-right">'.the_field('lisans_durumu_sec', $r->ID ).'</span>';
    İfadesi sayesinde yine çıktı alabiliyorum. Fakat burada çıktı "Ücretli", "Ücretsiz", "Freemium" gibi değilde atadığım diziler ile birlikte çıkıyor.
    Yani şu şekilde: "ucretli, Ücretli", "ucretsiz, Ücretsiz" veya "freemium, Freemium" şeklinde.

    Benim bu alanda da sadece değer olarak bir çıktı almam gerekiyor sadece: "Ücretsiz" gibi.

    Bu işlemi sağlayabileceğim bir yol mevcut mudur?

    Functions dosyamda yer alan eklenti kodu ise şu şekilde:

    if( function_exists('acf_add_local_field_group') ):
    
    acf_add_local_field_group(array(
        'key' => 'group_5d3def59aab3a',
        'title' => 'Lisans Seç',
        'fields' => array(
            array(
                'key' => 'field_5d3def83a9828',
                'label' => 'Lisans Durumu Seç',
                'name' => 'lisans_durumu_sec',
                'type' => 'radio',
                'instructions' => '',
                'required' => 1,
                'conditional_logic' => 0,
                'wrapper' => array(
                    'width' => '',
                    'class' => '',
                    'id' => '',
                ),
                'choices' => array(
                    'ucretli' => 'Ücretli',
                    'ucretsiz' => 'Ücretsiz',
                    'freemium' => 'Freemium',
                ),
                'allow_null' => 0,
                'other_choice' => 0,
                'default_value' => '',
                'layout' => 'vertical',
                'return_format' => 'array',
                'save_other_choice' => 0,
            ),
        ),
        'location' => array(
            array(
                array(
                    'param' => 'post_type',
                    'operator' => '==',
                    'value' => 'post',
                ),
            ),
        ),
        'menu_order' => 0,
        'position' => 'side',
        'style' => 'default',
        'label_placement' => 'top',
        'instruction_placement' => 'label',
        'hide_on_screen' => '',
        'active' => true,
        'description' => '',
    ));
  • 12-08-2019, 19:10:06
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <?php
    
    $lisans = get_field('lisans_durumu_sec');
    if(isset($lisans) && !empty($lisans))
    {
        $goodDevices    =    ['ucretsiz','freemium','ucretli'];
        if(in_array($lisans,$goodDevices)){
            echo CatchModulem($goodDevices[array_search($lisans,$goodDevices)]);
        }
    
    }
    function CatchModulem($lisans){
        switch($lisans){
            case 'ucretsiz':
                return '<span class="licence premium-bg">Ücretsiz</span>';
            break;
            case 'freemium':
                return '<span class="licence premium-bg">Freemium</span>';
            break;
            case 'ucretli':
                return '<span class="licence paid-bg">Ücretli</span>';
            break;
            default:
                return "";
            break;
        }
    }
    
    ?>