• 11-08-2019, 16:34:06
    #1
    Merhabalar, aşağıdaki kod single.php'de yer alıyor ve bu kod sayesinde özel alandaki girişi rahatlıkla istediğim şekilde sayfaya yazdırabiliyorum:

    <?php
    
    $colors = get_field('platform_secimi');
    if(isset($colors)){
    $goodDevices = ['windows','macos','unix','android','ios','tvos','tarayici'];
    
    foreach ($goodDevices as $device){
    if(in_array($device,$colors)){
    $catchModule = CatchModule($device);
    echo $catchModule;
    }
    }
    
    }
    function CatchModule($colors){
    switch($colors){
    case 'windows':
    return '<span class="item"><i class="fab fas-1p5x fa-windows m-right-5 va-mid"></i> Windows</span>';
    break;
    case 'macos':
    return '<span class="item"><i class="fab fas-1p5x fa-apple m-right-5 va-mid"></i> macOS</span>';
    break;
    case 'unix':
    return '<span class="item"><i class="fab fas-1p5x fa-linux m-right-5 va-mid"></i> Unix</span>';
    break;
    case 'android':
    return '<span class="item"><i class="fab fas-1p5x fa-android m-right-5 va-mid"></i> Android</span>';
    break;
    case 'ios':
    return '<span class="item"><i class="fab fas-1p5x fa-apple m-right-5 va-mid"></i> iOS</span>';
    break;
    case 'tvos':
    return '<span class="item"><i class="fab fas-1p5x fa- m-right-5 va-mid"></i> tvOS</span>';
    break;
    case 'tarayici':
    return '<span class="item"><i class="fab fas-1p5x fa-chrome m-right-5 va-mid"></i> Tarayıcı</span>';
    break;
    default:
    return "";
    break;
    }
    }
    
    ?>
    Bundan ayrı olarak daha alt satırlarda ise bir eklenti sayesinde bazı postları listeletiyorum.
    Bu listemeleri yaptığım kodda yukarıdaki kodda yer alan ifadeyi de gösterebilmem gerekiyor fakat uygun bir şekilde nasıl bunu yerleştirebilieceğimi çözemedim.
    Bahsettiğim kod ise şu şekilde:

    <?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();
    }
    ?>
    tam olarak bu satırda yani yukarıdaki kodun 14.satırında o istediğim ifadeyi gösterebilmem lazım:

    echo '<span class="licence free-bg float-right">'.the_field('lisans_durumu_sec', $r->ID ).'</span>';
    fakat maalesef "the_field('lisans_durumu_sec', $r->ID )" kodu bana istediğim sonu vermedi. Orayı nasıl revize edip istediğim sonuca ulaşabilirim?
  • 11-08-2019, 21:53:32
    #2
    Sadece şu satırın ekrana ne yazdırdığını söyleyebilir misiniz?
    echo '<span class="licence free-bg float-right">'.the_field('lisans_durumu_sec', $r->ID ).'</span>';
    Eğer bu kısımdan android, windows gibi anahtar kelimeler geliyorsa fonksiyonunuzu şu şekilde düzeltin:
    function CatchModule($colors){
        $items = array(
            'windows'=> array('title'=>'Windows', 'font'=>'windows'),
            'macos' => array('title'=>'macOS', 'font'=>'apple'),
            'unix' => array('title'=>'Unix', 'font'=>'linux'),
            'android' => array('title'=>'Android', 'font'=>'android'),
            'ios' => array('title'=>'iOS', 'font'=>'apple'),
            'tvos' => array('title'=>'tvOS', 'font'=>'television'),
            'tarayici' => array('title'=>'Tarayıcı', 'font'=>'chrome')
        );
    
        if(array_key_exists($colors, $items))
        {
            return '<span class="item">
                    <i class="fab fas-1p5x fa-'.$items[$colors]['font'].' m-right-5 va-mid"></i>
                    '.$items[$colors]['title'].'
                    </span>';    
        }
    
        return '';
    }
    Ve sizin satırınızda da şu şekilde kullanın:
    $field_type = the_field('lisans_durumu_sec', $r->ID );
    echo '<span class="licence free-bg float-right">'.CatchModule($field_type).'</span>';
  • 12-08-2019, 14:09:17
    #3
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Sadece şu satırın ekrana ne yazdırdığını söyleyebilir misiniz?
    echo '<span class="licence free-bg float-right">'.the_field('lisans_durumu_sec', $r->ID ).'</span>';
    Eğer bu kısımdan android, windows gibi anahtar kelimeler geliyorsa fonksiyonunuzu şu şekilde düzeltin:
    function CatchModule($colors){
        $items = array(
            'windows'=> array('title'=>'Windows', 'font'=>'windows'),
            'macos' => array('title'=>'macOS', 'font'=>'apple'),
            'unix' => array('title'=>'Unix', 'font'=>'linux'),
            'android' => array('title'=>'Android', 'font'=>'android'),
            'ios' => array('title'=>'iOS', 'font'=>'apple'),
            'tvos' => array('title'=>'tvOS', 'font'=>'television'),
            'tarayici' => array('title'=>'Tarayıcı', 'font'=>'chrome')
        );
    
        if(array_key_exists($colors, $items))
        {
            return '<span class="item">
                    <i class="fab fas-1p5x fa-'.$items[$colors]['font'].' m-right-5 va-mid"></i>
                    '.$items[$colors]['title'].'
                    </span>';    
        }
    
        return '';
    }
    Ve sizin satırınızda da şu şekilde kullanın:
    $field_type = the_field('lisans_durumu_sec', $r->ID );
    echo '<span class="licence free-bg float-right">'.CatchModule($field_type).'</span>';
    Hocam öncelikle hayırlı bayramlar dilerim, çok teşekkür ederim verdiğiniz kodlar ile deneme yaparken bir hata fark ettim paylaştığım ilk kod başka bir alanın. Farklı bir kod paylaşmışım yani.
    Aslında doğru kod şu olacaktı:

    <?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;
    }
    }
    
    ?>

    Seçiliolan işaret kutusuna göre ilgili yazdırma çıktıları: <span class="licence premium-bg">Ücretsiz</span> gibi olmakta.