• 31-01-2024, 17:05:25
    #1
    merhaba, wp de bir sayfa oluşturup , Altabetik Lisetele , isminde , belirli bir tek kategoride hangi harfe tılkarsam o harfle başlayan içeriklerin gelmesini istiyorum .
    Eklenti yazmaya çalıştım .
    Aslında sanırım bir miktar yazdımda. Sayfa da Alfabetik listeleme yapabiliyor.
    ve çalışıyor gibi de.

    Sorun :Harf e tıklayınca sayfa bulunamadı diyor . Nerede Hata olabilir kodda ?

    <?php
    /*
    Plugin Name: My Alphabet Filter
    Description: Adds an alphabetical filter to list posts starting with a selected letter.
    Version: 1.0
    Author: TheAlfabet
    */
    
    // Harf listesi k覺sa kodu
    if ( ! defined( 'ABSPATH' ) ) {
    die( 'You are not allowed to call this page directly.' );
    }
    
    
    function alphabet_filter_shortcode() {
    $alphabet = range('A', 'Z');
    $html = '<div class="alphabet-list">';
    foreach ($alphabet as $letter) {
    $html .= '<a href="' . add_query_arg('letter', $letter) . '">' . $letter . '</a> ';
    }
    $html .= '</div>';
    
    return $html;
    }
    add_shortcode('alphabet_filter', 'alphabet_filter_shortcode');
    
    // Harfe göre filtreleme
    function filter_posts_by_letter($query) {
    if (is_admin() || !$query->is_main_query() || !isset($_GET['letter']) || !preg_match("/^[A-Z]$/", $_GET['letter'])) {
    return;
    }
    
    $letter = $_GET['letter'];
    echo $letter ;
    $query->set('orderby', 'title');
    $query->set('order', 'ASC');
    $query->set('meta_query', array(
    array(
    'key' => 'title',
    'value' => '^' . $letter,
    'compare' => 'REGEXP'
    )
    ));
    }
    add_action('pre_get_posts', 'filter_posts_by_letter');




  • 01-02-2024, 06:07:20
    #2
    'key' => 'title', yazan yeri 'key' => 'post_title', olarak değiştir

    veya
    $query->set('order', 'ASC'); sonrasına $query->set('s', $letter); ekle