PDA

Orijinalini görmek için tıklayınız : Wordpress post yapısını anlamak



angelaus
16-04-2012, 21:31
Merhaba

WP ile haşır neşir olmaya başladım.

bir wordpress post'u için

title ve content var. bir de custom field ve featured image.

şimdi title kısmında sıkıntı yok.

contenti ise ben

<img src="resim.jpg" /> sonrasında html içerikli bir sürü yazı.

şeklinde yapıyorum.

şimdi benim sorumbir kategori blog oluşturmak ve bu blogda her bir post için sadece


Title
resim


şeklinde yapmak. TİTLE için kolay
<a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>

diye çekiyorum. ama img ile başlayan resmi nası alıcam bulamadım..


birde sanırım eklenen resmin "attachment" şeklinde eklenmesi var ve birde featured image eklenmesi ama ben ilk dediğim img tagı ile eklemeyi uygun görüyorum.

Çağrı
17-04-2012, 16:05
Belli bir kategori için ayrı bir dosya oluşturup (tema içinde) burada istediğin değişikliği yapabilirsin.. category-6.php örneğin.. ID numarası 6 olan kategori konularını istediğin şekilde göstermeni sağlar.

Yazılar için ise yine bloguma gelen aynı soruya şu cevabı (http://www.bencagri.com/wordpress-sayfa-yapilari.html/comment-page-1#comment-2930) vermiştim..



tam olarak ne istediğini öğrenmem lazım ama yaparsın tabiki…

örneklerle gideyim, senin bir blog kategorin, bir haber kategorin, bir de portfolyo kategorin olsun. Haber kategorisine tıkladığın sayfa düzeni değişsin,konular yanyana dizilsin, blog klasik olsun, portfolyoda da sadece resimler olsun.. Bunun için single.php değil, category.php ile çözülür. kısaca şu şekilde çözersin, category-{slug}.php ile (burada slug, kategori id’dir.) Atıyorum portfolyo kategorisinin id numarası 5 ise category-5.php yaptığında kategori görünümü değişecektir…

Gelelim Single.php’ye.

single.php içine şunu yaz.



<?php
$post = $wp_query->post;
if ( in_category(’5′) ) {
include(TEMPLATEPATH . ‘/portfolyo.php’);

} elseif ( in_category(’6′) ) {
include(TEMPLATEPATH . ‘/haber.php’);

} else {
include(TEMPLATEPATH . ‘/blogpost.php’);
}
?>

Oluşturduğun ayrı ayrı sayfaların adı portfolyo.php, haber.php, blogpost.php diyelim ki.. Bu kodla şunu yapmış olduk, eğer yazı 5 numaralı kategorideyse portfolyo.php dosyasını getir, 6 numaralı kategorideyse haber.php, bu ikisi de değilse blogpost.php dosyasını getir dedik..

Gelelim konuya, konuda anlattığım şey, ne category.php, ne single.php ile alakalı. page.php ile alakalı tamamen :) Yönetim panelinden “Yeni Sayfa” oluştur dediğimizde oluşturduğumuz tek sayfanın şablonunu değiştiriyoruz bu anlattığım konuyla..

Umarım yardımcı olmuşumdur. kolay gelsin :)

Custom Fields (Özel Alanlar) kullanımı ise şu şekilde;



<?php $key="resim"; echo get_post_meta($post->ID, $key, true); ?>


anahtar'ı "resim" olarak eklenen özel alanın çıktısını verir...



<img src="<?php $key="resim"; echo get_post_meta($post->ID, $key, true); ?>" />


şeklinde kullanırsan ekrana url'sini girdiğin resmi basar.

angelaus
17-04-2012, 17:01
peki bu kodu timthumb ile verebilirmisin.


aslında aslın sorum resme img ile eklediğim resmin urlsini alabilsem daha hoş olur

Çağrı
17-04-2012, 17:11
timthumb ile de aynı...



<img src=”<?php echo bloginfo(‘template_url’); ?>/resim/timthumb.php?src=<?php $key="resim"; echo get_post_meta($post->ID, $key, true); ?>&w=150&h=200&zc=1″ alt=”" />


Yukarıdaki verdiğim özel alanlar ile ilgili idi, (konuya) "Öne çıkan görsel" ekleyerek yapmak için ise the_post_thumbnail(); (http://codex.wordpress.org/Function_Reference/the_post_thumbnail) fonksiyonu bunun için var zaten :)

Kullanımı :


<a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail( array(125,125)); ?>


Array 125,125 => 125x125 ebatında basar resmi...

Ayrıca wordpress resim eklenince küçük,orta,büyük şeklinde parçalıyor resimleri...

Onu kullanmak için örnek kod (http://codex.wordpress.org/Function_Reference/the_post_thumbnail#Thumbnail_Sizes) codex'te mevcut... :)

angelaus
17-04-2012, 18:13
evet belli alanları almak süper bir özellik.

ama content() içindeki ilk "img" yi almayı becerebiliyormuyuz

Çağrı
17-04-2012, 18:33
Tabikide :)

wp_get_attachment_image_src(); (http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src) fonksiyonu mevcut bunun için... Kullanım örneği sayfada var...

Yada alternatif olarak şöyle bir eklentimiz de var :) WordPress › WP Get Post Image « WordPress Plugins (http://wordpress.org/extend/plugins/wp-get-post-image/)

Eklentiyi aktfileştirdikten sonra temada kullanıacak kod;



<?php
// use this example wherever you have access to $post->ID, e.g. the WordPress loop
if(function_exists('wp_get_post_image'))
echo wp_get_post_image('width=450&css=alignleft&parent_id='.$post->ID);
?>

angelaus
17-04-2012, 18:43
iste bu süper. şimdi ID ya da -slug kullanarak kişiselleştirilmiş sayfalar bloglar yapabilirim

angelaus
17-04-2012, 20:31
şimdi birde bu blogda içeriğin ilk 100 karakterini göstermek nasıl oluyor. bunun için de fonksiyon var mı

Çağrı
18-04-2012, 10:52
the_excerpt(); - the_content();

her ikiside loopdan sonra kullanılır, yazı var mı yok mu döngüsünden sonra, veritabanından yazının içeriğii gösterir..

the_content() -> yazının içeriğinin tümünü gösterir
the_excerpt() (http://codex.wordpress.org/Function_Reference/the_excerpt) -> Yazının sadece belli bir kısmını gösterir.

Varsayılan olarak excerpt = 55 kelime gösterir... Tabiki bu fonksyionları özelleştirmeniz mümkün. Temanın functions.php 'sine aşağdaki kodu yazdığınız zaman




function custom_excerpt_length( $length ) {
return 100;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );


excerpt'in ekranda göstereceği kelime sayısı 100 olur.

angelaus
18-04-2012, 11:22
Çağrı sağolasın


<a href='<?php echo get_permalink(56); ?>'
rel='bookmark' title='<?php the_title(56); ?>'>

ben yukarıdaki kod ile 56 ID li makalenin başlık ve permalikini çekebildim.

ama


echo the_content(56) istediğim şeyi vermedi..

Çağrı
18-04-2012, 11:29
the_content fonksyionu ID ile yazıyı göstermez.

angelaus
18-04-2012, 12:50
öncesi 56 ID sini öretecek bi loop fonksiyon atsak olmaz mı :D

Çağrı
18-04-2012, 12:51
Bunu get_post() fonksiyonu ile çözebiliriz. Şu şekilde yapılabilir...



<?php
$id = 56;
$konu = get_post($id, ARRAY_A);
$baslik = $konu['post_title'];
$ozet = $konu['post_excerpt'];
?>



sonra çıktıları vermek için <?php echo $baslik; ?> şeklinde ekrana bastırılır.

Yalnız anlamadığım birşey var, neden sadece belli bir yazıyı alıyorsunuz, göstermek için? Sayfalar kısmıda aynı işi görüyor sonuçta...

angelaus
18-04-2012, 12:54
Ana sayfaya yarı otomatik bir dizayn yaptım

4 tane kutucuk var ve bu kutuların post ID lere göre güncellenebilmelerini sağlıyorum. post içindeki resim başlık ve excerpt bilgilerini kut uiçine kafama göre diziyorum

Çağrı
18-04-2012, 12:57
ozaman get_post fonksiyonu sizn aradığınız şey, buarada not düşeyim konuya ait şu bilgiler (http://codex.wordpress.org/Function_Reference/get_post#Return)i çekebiliyorsunuz..

angelaus
18-04-2012, 13:03
codexi süper. tema yapısı harika açıkçası bu kadar özelleştirme beklemiyordum WP şahane iş yapmış

Çağrı
18-04-2012, 13:05
yaklaşık 2.5 sürümünden beri böyle =) Herzaman dediğim gibi, az buçuk php bilen ve tema yapan birisi, wordpress'e sadece tema yazarak istediği sistemi yapabilir :)

olkunmustafa
20-04-2012, 11:07
Benimde 0 dan tema yapma denemelerim var bu aralar.basitten başlıyorum tabi ki belki 2009 da yapılan temalara benzeyecek ama bittiği zaman güzel olacak.Bende bir kategori blogu oluşturup title veya başka hiç bir şey olmadan sadece resimler olacak ve resimlere tıklayınca üst single php açılacak ve ama single php açıldığı zaman da altta archive sayfası kapanmayacak şeklinde bir çalışma yaptım.Bunun için öne çıkarılmış görsel özelliğini kullandım.işim daha kolay oldu.Yakında tamamen bitirebilirsem paylaşacağım...

Yukarıda konuştuklarnızı da baştan sona okudum ama biraz kafam karıştı doğrusu tekrar okumam gerekecek :D Ders niteliğinde olmuş teşekkürler.

Çağrı
20-04-2012, 12:28
aslında karışık birşey yok :) wordpress ile neyi nasıl yapmak istiyorsanız ona göre fonksiyonlar mevcut, konuda örneklerini verdiklerim sadece birkaçı :)

olkunmustafa
20-04-2012, 15:08
Peki siz bunları codex ten mi öğreniyorsunuz.Aslında sizin gibi bir kaç kişi birleşip bu codex i türkçeleştirebilseniz vatana millete çok hayırlı birşey yaparsanız :D

Akar
07-05-2012, 18:20
Tadından yiyesim geldi konuyu :D