• 26-08-2021, 11:36:44
    #1
    Worpress paneline BURADAKİ gibi özelleştirme alanı yaptım ancak fonksiyonu seçeneklere göre yazdırmayı bilmiyorum ve nasıl yapabileceğini anlayabileceğim kaynak bulamadım.

    Fonksiyon şu şekilde;
    function laura_theme_customizer( $wp_customize ) {
       class Laura_Image_Radio_Button_Custom_Control extends Laura_Custom_Control {
          public $type = 'image_radio_button';
          public function enqueue() {
             wp_enqueue_style( 'laura-custom-controls-css', $this->get_laura_resource_url() . 'inc/assets/css/customizer.css', array(), '1.0', 'all' );
          }
          public function render_content() {
          ?>
             <div class="image_radio_button_control">
                <?php if( !empty( $this->label ) ) { ?>
                   <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
                <?php } ?>
                <?php if( !empty( $this->description ) ) { ?>
                   <span class="customize-control-description"><?php echo esc_html( $this->description ); ?></span>
                <?php } ?>
                <?php foreach ( $this->choices as $key => $value ) { ?>
                   <label class="radio-button-label">
                      <input type="radio" name="<?php echo esc_attr( $this->id ); ?>" value="<?php echo esc_attr( $key ); ?>" <?php $this->link(); ?> <?php checked( esc_attr( $key ), $this->value() ); ?>/>
                      <img src="<?php echo esc_attr( $value['image'] ); ?>" alt="<?php echo esc_attr( $value['name'] ); ?>" title="<?php echo esc_attr( $value['name'] ); ?>" />
                   </label>
                <?php } ?>
             </div>
          <?php
          }
       }
    }
    add_action('customize_register', 'laura_theme_customizer');
    Ayarları şu şekilde;
    function laura_home_page_theme_customizer( $wp_customize ) {
      $wp_customize->add_setting( 'number_home_page_columns',
         array(
            'transport' => 'refresh',
            'sanitize_callback' => 'laura_radio_sanitization'
         )
      );
      $wp_customize->add_control( new Laura_Image_Radio_Button_Custom_Control( $wp_customize, 'number_home_page_columns',
         array(
            'label' => __( 'Number of Home Page Columns', 'laura' ),
            'description' => esc_html__( 'The home page view changes according to the number of columns.', 'laura' ),
            'section' => 'laura_home_style',
            'choices' => array(
               'one-column' => array(
                  'image' => trailingslashit( get_template_directory_uri() ) . 'inc/assets/img/one-column.png',
                  'name' => __( '1 Column', 'laura' )
               ),
               'two-columns' => array(
                  'image' => trailingslashit( get_template_directory_uri() ) . 'inc/assets/img/two-columns.png',
                  'name' => __( '2 Columns', 'laura' )
               ),
               'three-columns' => array(
                  'image' => trailingslashit( get_template_directory_uri() ) . 'inc/assets/img/three-columns.png',
                  'name' => __( '3 Columns', 'laura' )
               ),
               'four-columns' => array(
                  'image' => trailingslashit( get_template_directory_uri() ) . 'inc/assets/img/four-columns.png',
                  'name' => __( '4 Columns', 'laura' )
               )
            )
         )
      ));
    add_action('customize_register', 'laura_home_page_theme_customizer');
    Yapmak istediğim eklediğim yere seçeneklere göre önceden girdiğim metin ekleyecek(class yazacak).

    Örnek:
    1. görsel seçilirse: <article class="col-sm-12">
    2. görsel seçilirse: <article class="col-sm-6">
    3. görsel seçilirse: <article class="col-sm-4">
    4. görsel seçilirse: <article class="col-sm-3">

    Kaynak: https://github.com/maddisondesigns/customizer-custom-controls#user-content-image-radio-button
  • 26-08-2021, 13:29:50
    #2
    one-column, two-column... kısımlarını col-sm-12, col-sm-6 şeklinde değiştirin. Sonra get_theme_mod değerini yazdırın. Yanlış hatırlamıyorsam seçili olan id'yi yazdıracak. Böyle class eklemiş olursunuz.
    <article class="<?php echo get_theme_mod('laura_home_style'); ?>"></article>
  • 26-08-2021, 22:04:11
    #3
    Rawt adlı üyeden alıntı: mesajı görüntüle
    one-column, two-column... kısımlarını col-sm-12, col-sm-6 şeklinde değiştirin. Sonra get_theme_mod değerini yazdırın. Yanlış hatırlamıyorsam seçili olan id'yi yazdıracak. Böyle class eklemiş olursunuz.
    <article class="<?php echo get_theme_mod('laura_home_style'); ?>"></article>
    Yok hocam bende böyle denemiştim de hiç bir şey yazdıramıyorum ekrana. Seçenekler için bir fonksiyon falan mı yazmak gerekiyor acaba şu seçilirse bu yazılsın..vs şeklinde?
  • 26-08-2021, 22:08:55
    #4
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Yok hocam bende böyle denemiştim de hiç bir şey yazdıramıyorum ekrana. Seçenekler için bir fonksiyon falan mı yazmak gerekiyor acaba şu seçilirse bu yazılsın..vs şeklinde?
    O zaman şöyle yapabilirsiniz?

    <?php
    
    if ( get_theme_mod('laura_home_style') == 'one-column' ) {
         $classes = 'col-sm-12';
    } elseif ( get_theme_mod('laura_home_style') == 'two-column ) {
         $classes = 'col-sm-6';
    } else {
         $classes = 'col-sm-12';
    }
    ?>
    
    <article class="<?php echo $classes; ?>">
       ...
    </article>
  • 04-09-2021, 20:05:39
    #5
    Rawt adlı üyeden alıntı: mesajı görüntüle
    O zaman şöyle yapabilirsiniz?

    <?php
    
    if ( get_theme_mod('laura_home_style') == 'one-column' ) {
         $classes = 'col-sm-12';
    } elseif ( get_theme_mod('laura_home_style') == 'two-column ) {
         $classes = 'col-sm-6';
    } else {
         $classes = 'col-sm-12';
    }
    ?>
    
    <article class="<?php echo $classes; ?>">
       ...
    </article>
    Yaptım hocam ancak sonuç değişmiyor, hangisini seçersem seçeyim ekrana else'den sonraki col-sm-12 yazılıyor. Ayrıca two-column sonunda ' eksikti onu ekledim öyle denedim. Birde laura_home_style yerine number_home_page_columns olarak denedim sonuç ayrı.

    Ayrıca dikkatimi çeken bir şey oldu, ayarları değiştirdikten sonra (BURADAN) kaydedemiyorum. BÖYLE hata veriyor, sebebini bilmiyorum belki bu yüzden oluyordur. Kayıt olmuyorsa bu kodun çalışması mümkün olmayabilir?
  • 05-09-2021, 12:49:44
    #6
    Tamamdır hocam teşekkürler. Kodlar eksikmiş buldum düzeldi şu an istediğimi yaptım çalışıyor. Çok teşekkür ederim. Sorun 'sanitize_callback' => 'laura_radio_sanitization' için gerekli olan radio sanitization fonksiyonunu eklemeyi unutmammış.