Aptalca bir soru gibi görünüyor. Fakat çözemiyorum :(.
Özel post_type'nin arşiv URL'sine (arşiv- {post_type} .php) giden evde düğmeyi görüntülemem gerekiyor. Bunu nasıl yaparım?
Aptalca bir soru gibi görünüyor. Fakat çözemiyorum :(.
Özel post_type'nin arşiv URL'sine (arşiv- {post_type} .php) giden evde düğmeyi görüntülemem gerekiyor. Bunu nasıl yaparım?
Yanıtlar:
Merhaba @Silent:
WordPress 3.1'de istediğinizi tam olarak yapan ve adlandırılan bir işlev olduğu ortaya çıkıyor get_post_type_archive_link()
; İşte nasıl adlandırılacağını (adında özel bir yazı tipi varsayarsak 'product'
):
<a href="<?php echo get_post_type_archive_link('product'); ?>">Products</a>
Aşağıda WordPress'in bu kullanım durumu için yerleşik bir işlevi olduğunu keşfetmeden önceki cevabım.
WordPress 3.1 için temel kaynak kodunda bir şey görmezden gelmediğim sürece, get_archive_link()
şöyle adlandırabileceğiniz bir fonksiyon aradığınızı düşünüyorum (adında özel bir yazı tipi varsayarak 'product'
):
<a href="<?php echo get_archive_link('product'); ?>">Products</a>
Ve işte kendi function.php
dosyalarınızın içine ya .php
da yazdığınız bir eklenti için bir dosyaya yerleştirebileceğiniz kaynak kod :
if (!function_exists('get_archive_link')) {
function get_archive_link( $post_type ) {
global $wp_post_types;
$archive_link = false;
if (isset($wp_post_types[$post_type])) {
$wp_post_type = $wp_post_types[$post_type];
if ($wp_post_type->publicly_queryable)
if ($wp_post_type->has_archive && $wp_post_type->has_archive!==true)
$slug = $wp_post_type->has_archive;
else if (isset($wp_post_type->rewrite['slug']))
$slug = $wp_post_type->rewrite['slug'];
else
$slug = $post_type;
$archive_link = get_option( 'siteurl' ) . "/{$slug}/";
}
return apply_filters( 'archive_link', $archive_link, $post_type );
}
}
Aslında hafta sonu boyunca tam olarak bu mantık üzerinde çalışıyordum, ancak WordPress'in muhtemelen herhangi bir site için çalışmasına rağmen görebileceği tüm kullanım durumlarında genel olarak mantığın sırasının% 100 olduğundan emin değilim.
Bu, WordPress'e bu akşam daha sonra yapacağımı düşündüğüm trac ile eklenmesini önermek için de harika bir şey .
Yazı tipini kaydettirirken "has_archive" parametresiyle sümüklü bir dize geçirebilir ve yeniden yazmayı doğru ya da bir dizi olarak ayarladığınızdan ancak yanlış olmadığından ve CPT arşiv URL’nizin http://www.YOURDOMAIN.com olacaktır. / has_archive_slug örneğin
register_post_type'nuzu örneğin ayarlarsanız:
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => 'product',
'capability_type' => 'post',
'has_archive' => 'products',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','author','thumbnail','excerpt','comments')
);
register_post_type('product',$args);
o zaman tek URL'niz: http://www.YOURDOMAIN.com/product/postName ve arşiv adresiniz : http://www.YOURDOMAIN.com/products/
has_archive
bir boolean olduğunu düşünmüştüm ama şimdi bir dize verilebileceğini biliyorum, bu yüzden tekil özel yazı recipe
/recipes/
'rewrite'
yalnızca bir boole veya dizi değeri kabul ediyor. 'rewrite' => 'product',
Sizin listelediğinizden ziyade , bunun yerine olmalı 'rewrite' => array( 'slug' => 'product' ),
.
yoursite.com/type-slug
açıkça başka bir şeye ayarlamadıysanız, örn.yoursite.com/some-other-url
..