• 18-03-2016, 14:16:55
    #1
    Kolay gelsin arkadaşlar,

    Bir sorum var. wordpress yazılarda "başlık" yazmak istrmiyorum, konu içerisinden bir kaç kelimeyi (rastgele) sistem kendisi başlık olarak seçmesini istiyorum.

    Böyle bir eklenti veya php kod biliyor musunuz ? yapılabilir mi ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 13:15:54 -->-> Daha önceki mesaj 13:06:12 --

    Çözdüm arkadaşlar, belki ileride arayan olur o yüzden şu eklenti işinizi görücektir; https://wordpress.org/plugins/auto-generate-title/

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 14:16:55 -->-> Daha önceki mesaj 13:15:54 --

    Bu eklentide tam istediğim gibi olmadı.

    İlk 30 krakteri alıyor..

    Makale içerisinden rastgele 30 krakter seçmesini istiyorum halbuki.

    kod şu şekilde

    <?php
    
    
    add_shortcode("agt", "agt_shortcode");  
    function agt_shortcode( $atts, $content = null ) {  
        return $content;  
    } 
    
    add_filter( 'wp_insert_post_data' , 'auto_generate_title' , '99', 2 );
    function auto_generate_title( $data , $postarr ) 
    {
        $title_of_post = ltrim($data['post_title']);
        $length_of_title = strlen($title_of_post);
        $postdata = ltrim($data['post_content']);
        if($length_of_title<1)
        {
                    $matchPattern = "/\[agt\](.*?)\[\/agt\]/";
            preg_match_all($matchPattern, $postdata, $foundIt, PREG_PATTERN_ORDER);
            if (isset($foundIt[1][0]))
                $data['post_title'] =  $foundIt[1][0];
            else
                $data['post_title'] = substr($postdata,0,30);
        }
        return $data;
    }    
    ?>
    ilk 30 krakter yerine random nasıl yapabiliriz bunu ?
  • 18-03-2016, 15:53:43
    #2
    Kalyoncu adlı üyeden alıntı: mesajı görüntüle
    Kolay gelsin arkadaşlar,

    Bir sorum var. wordpress yazılarda "başlık" yazmak istrmiyorum, konu içerisinden bir kaç kelimeyi (rastgele) sistem kendisi başlık olarak seçmesini istiyorum.

    Böyle bir eklenti veya php kod biliyor musunuz ? yapılabilir mi ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 13:15:54 -->-> Daha önceki mesaj 13:06:12 --

    Çözdüm arkadaşlar, belki ileride arayan olur o yüzden şu eklenti işinizi görücektir; https://wordpress.org/plugins/auto-generate-title/

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 14:16:55 -->-> Daha önceki mesaj 13:15:54 --

    Bu eklentide tam istediğim gibi olmadı.

    İlk 30 krakteri alıyor..

    Makale içerisinden rastgele 30 krakter seçmesini istiyorum halbuki.

    kod şu şekilde

    <?php
    
    
    add_shortcode("agt", "agt_shortcode");  
    function agt_shortcode( $atts, $content = null ) {  
        return $content;  
    } 
    
    add_filter( 'wp_insert_post_data' , 'auto_generate_title' , '99', 2 );
    function auto_generate_title( $data , $postarr ) 
    {
        $title_of_post = ltrim($data['post_title']);
        $length_of_title = strlen($title_of_post);
        $postdata = ltrim($data['post_content']);
        if($length_of_title<1)
        {
                    $matchPattern = "/\[agt\](.*?)\[\/agt\]/";
            preg_match_all($matchPattern, $postdata, $foundIt, PREG_PATTERN_ORDER);
            if (isset($foundIt[1][0]))
                $data['post_title'] =  $foundIt[1][0];
            else
                $data['post_title'] = substr($postdata,0,30);
        }
        return $data;
    }    
    ?>
    ilk 30 krakter yerine random nasıl yapabiliriz bunu ?
    *
    add_shortcode("agt", "agt_shortcode");* 
    function agt_shortcode( $atts, $content = null ) {* 
    ****return $content;* 
    } 
    *
    add_filter( 'wp_insert_post_data' , 'auto_generate_title' , '99', 2 );
    function auto_generate_title( $data , $postarr ) 
    {
    ****$title_of_post = ltrim($data['post_title']);
    ****$length_of_title = strlen($title_of_post);
    ****$postdata = ltrim($data['post_content']);
    ****if($length_of_title<1)
    ****{
    ****************$matchPattern = "/\[agt\](.*?)\[\/agt\]/";
    ********preg_match_all($matchPattern, $postdata, $foundIt, PREG_PATTERN_ORDER);
    ********if (isset($foundIt[1][0]))
    ************$data['post_title'] =* $foundIt[1][0];
    ********else
    
    			$metin = str_replace('.  ','.',$postdata);
    			$metin = str_replace('. ','.',$metin);
    			$metin = str_replace('.','. ',$metin);
    
    			$sadecemetin = preg_replace("@[^a-z0-9\-_şıüğçöÖİŞĞÜÇ ]+@i","",$metin);
    
    			$bol = @explode(' ',$sadecemetin);
    			$kacbosluk = count($bol);
    			$rasgelebaslangicbul = rand (20,$kacbosluk); // 20 değeri kaçıncı kelimeden sonra başlasın ?
    
    			for ($y=$rasgelebaslangicbul; $y<$kacbosluk; $y++) {
    				$icerikcumle[] = $bol[$y];  
    			}
    			$cumletopla = implode(' ',$icerikcumle);
    			$sonbaslik = mb_substr($cumletopla,0,80,'UTF-8');
    
    			$kelimesonsayi = mb_strpos($sonbaslik,' ',30,'UTF-8');
    			$kelimedebitir = mb_substr($sonbaslik,0,$kelimesonsayi,'UTF-8');  
    ************$data['post_title'] = $kelimedebitir;
    ****}
    ****return $data;
    }***
    Heralde bu işini görür üstad, kodları kendine göre düzenlersin.

    Edit : Kodlar eklentiden dolayı bozuk çıkıyor sanırım **** değerleri yok.

    http://pasted.co/c68819d1

    Şurdan sağlıklı halini alabilirsin.
  • 18-03-2016, 16:29:53
    #3
    Wordpress'ten anlamam ancak, bu tarz bir ihtiyacımı aşağıdaki gibi bir fonksiyon yazarak çözdüm.

    function baslikrand($aciklama){
    	$kon = explode(" ", strip_tags($aciklama));
    	$sayy = count($kon);
    	$rand = rand(1,$sayy-4);
    	$sayi = $rand;
    	$baslik = $kon[$sayi].' '.$kon[$sayi+1].' '.$kon[$sayi+2];
    	return $baslik;
    }
    Bu fonksiyon ile makale içerisindeki rastgele ard arda gelen 3 kelimeyi döndürür. Bunu başlık olarak atayabilirsiniz. Ekstra olarak dönen değerin ilk harflerini büyütebilirsiniz.
  • 18-03-2016, 17:50:44
    #4
    Developer
    add_shortcode("agt", "agt_shortcode");  
    function agt_shortcode( $atts, $content = null ) {  
        return $content;  
    } 
    function fasttruncate($string, $length = 80, $etc = '',$break_words = false, $middle = false)
    {
        if ($length == 0){
            return '';
        }
        if (strlen($string) > $length) {
            $length -= min($length, strlen($etc));
            if (!$break_words && !$middle) {
                $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
            }
            if(!$middle) {
                return substr($string, 0, $length) . $etc;
            } else {
                return substr($string, 0, $length/2) . $etc . substr($string, -$length/2);
            }
        } else {
            return $string;
        }
    }
    function tr_ucwords($deger) {
        $lower_arr = array("I"=>"ı","i"=>"İ");
        $deger = strtr($deger,$lower_arr);
        $deger = mb_convert_case($deger, MB_CASE_TITLE, "UTF-8");
        return $deger;
    }
    add_filter( 'wp_insert_post_data' , 'auto_generate_title' , '99', 2 );
    function auto_generate_title( $data , $postarr ) 
    {
        $kackarakter = 30;
        $ortalama1kelimekackarakter = 8;
        $title_of_post = ltrim($data['post_title']);
        $length_of_title = strlen($title_of_post);
        $postdata = ltrim($data['post_content']);
        if($length_of_title<1)
        {
            $matchPattern = "/\[agt\](.*?)\[\/agt\]/";
            preg_match_all($matchPattern, $postdata, $foundIt, PREG_PATTERN_ORDER);
            if (isset($foundIt[1][0])){
                $data['post_title'] =  $foundIt[1][0];
            }else{
                $metin = str_replace('.  ','.',$postdata);
                $metin = str_replace('. ','.',$metin);
                $metin = str_replace('.','. ',$metin);
                $sadecemetin = preg_replace("@[^a-z0-9\-_şıüğçöÖİŞĞÜÇ ]+@i","",$metin);
                $totalkarakter = @strlen($sadecemetin);
                $kelimebul = explode(' ', $sadecemetin);
                $totalkelime = @count($kelimebul);
                $kavg = ceil($kackarakter+3/$ortalama1kelimekackarakter);
                $maxrand = ($totalkelime - $kavg) - 1;
                $start = rand(0,$maxrand);
                $yenibaslik = array();
                for ($i=$start; $i <= ($start+($kavg)); $i++) { 
                    $yenibaslik[] = $kelimebul[$i];
                }
                $yenibaslik = @implode(' ', $yenibaslik);
                $yenibaslik = trim(fasttruncate($yenibaslik,$kackarakter));
                $yenibaslik = tr_ucwords($yenibaslik); /* her kelimenin ilk karakterini büyük karakter yapar. */
                $data['post_title'] = $yenibaslik;
            }
        }
        return $data;
    }
    Kalyoncu adlı üyeden alıntı: mesajı görüntüle
    Kolay gelsin arkadaşlar,

    Bir sorum var. wordpress yazılarda "başlık" yazmak istrmiyorum, konu içerisinden bir kaç kelimeyi (rastgele) sistem kendisi başlık olarak seçmesini istiyorum.

    Böyle bir eklenti veya php kod biliyor musunuz ? yapılabilir mi ?
  • 18-03-2016, 17:55:49
    #5
    php ustaların ellerine sağlık, özel mesaj ilede destek veren arkadaşlarada teşekkür ederim.