Jak ustawić / zmienić limit tagów w chmurze na WordPress
Oto jeden ze sposobów zmiany plików źródłowych WordPress’a aby zmienić dopuszczalną ilość tagów znajdujących się np. w widgetcie. Interesuje nas plik /wp-includes/category-template.php.
Trzeba odszukać w nim linijkę kodu (526 linia, ściśle rzecz ujmując):
function wp_tag_cloud( $args = ” ) {
$defaults = array(
‘smallest’ => 8, ‘largest’ => 22, ‘unit’ => ‘pt’, ‘number’ => 45,
‘format’ => ‘flat’, ‘separator’ => „\n”, ‘orderby’ => ‘name’, ‘order’ => ‘ASC’,
‘exclude’ => ”, ‘include’ => ”, ‘link’ => ‘view’, ‘taxonomy’ => ‘post_tag’, ‘echo’ => true
);
Wystarczy zmienić liczbę następującą po ‘number’ i gotowe. Tutaj także możemy ustalić rozmiar najmniejszego taga (smallest) i największego (largest). Minus takiego rozwiązania jest taki, że musimy to robić za każdym razem kiedy aktualizujemy WordPress (albo bynajmniej wtedy kiedy ten plik jest na liście aktualizowanych).
O innych sposobach napiszę w przyszłości.
więcejCustom Menu w WP3 – podstawy
Jak wiadomo WordPress Trzeci oddał w nasze ręce ciekawe narzędzie pod postacią Custom Menu. Można je zastosować w dowolnym miejscu szablonu pod warunkiem, że ten udostępnia taką możliwość. Jeśli nie udostępnia albo jest ona nie w tym miejscu gdzie byśmy sobie życzyli – możemy ją zaimplementować sami.
Należy zacząć od pliku functions.php
add_action('init', 'register_custom_menu');
function register_custom_menu() {
register_nav_menu('custom_menu', __('Custom Menu'));
}
Mamy tutaj 2 wartości po register_nav_menu:
- pierwsza to określenie jakiego użyjemy do wklejenia menu do kodu
- druga to nazwa jaka wyświetli nam się w panelu admina – „wygląd > menu”.
Kolejną rzeczą jaką należy zrobić to wkleić gdzieś nasze menu używając następującego kodu (najczęściej w header.php ale równie dobrze można sobie wstawić kilka różnych menu stosując inne nazewnictwo):
<?php wp_nav_menu(array('menu' => 'custom_menu')); ?>
Więcej zmiennych można znaleźć na WordPress Codex do czego zachęcam. Kod jest sprawdzony i działa.
Źródło: Thinkvitamin.com / Autor: Richard Shepherd
więcejLista tagów w formie rozwijalnej listy
Tagi to rzecz przydatna na stronach indeksujących wiele treści np. na jeden konkretny temat. Zamiast umieszczać typową „chmurkę” tagów można zrobić to w inny sposób (taka chmurka nie koniecznie pasuje do każdego szablonu). Oto sposób zaczerpnięty ze świetnej strony www.wphacks.com (autorstwa Jean-Baptiste Jung), jak przedstawić tagi w formie rozwijalnej listy:
Ten kod umieszczamy w pliku function.php jako, że musimy stworzyć nową funkcję:
<?php
function dropdown_tag_cloud( $args = '' ) {
$defaults = array(
'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
'exclude' => '', 'include' => ''
);
$args = wp_parse_args( $args, $defaults );$tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Always query top tags
if ( empty($tags) )
return;$return = dropdown_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
if ( is_wp_error( $return ) )
return false;
else
echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}function dropdown_generate_tag_cloud( $tags, $args = '' ) {
global $wp_rewrite;
$defaults = array(
'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
);
$args = wp_parse_args( $args, $defaults );
extract($args);if ( !$tags )
return;
$counts = $tag_links = array();
foreach ( (array) $tags as $tag ) {
$counts[$tag->name] = $tag->count;
$tag_links[$tag->name] = get_tag_link( $tag->term_id );
if ( is_wp_error( $tag_links[$tag->name] ) )
return $tag_links[$tag->name];
$tag_ids[$tag->name] = $tag->term_id;
}$min_count = min($counts);
$spread = max($counts) - $min_count;
if ( $spread <= 0 )
$spread = 1;
$font_spread = $largest - $smallest;
if ( $font_spread <= 0 )
$font_spread = 1;
$font_step = $font_spread / $spread;// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
if ( 'name' == $orderby )
uksort($counts, 'strnatcasecmp');
else
asort($counts);if ( 'DESC' == $order )
$counts = array_reverse( $counts, true );$a = array();
$rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';
foreach ( $counts as $tag => $count ) {
$tag_id = $tag_ids[$tag];
$tag_link = clean_url($tag_links[$tag]);
$tag = str_replace(' ', ' ', wp_specialchars( $tag ));
$a[] = "\t<option value='$tag_link'>$tag ($count)</option>";
}switch ( $format ) :
case 'array' :
$return =& $a;
break;
case 'list' :
$return = "<ul class='wp-tag-cloud'>\n\t<li>";
$return .= join("</li>\n\t<li>", $a);
$return .= "</li>\n</ul>\n";
break;
default :
$return = join("\n", $a);
break;
endswitch;return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args );
}
?>
Ten kod dodajemy w miejscu gdzie ma się pojawić owa lista:
<select name="tag-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
<option value="#">Lista tagów</option>
<?php dropdown_tag_cloud('number=0&order=asc'); ?>
</select>
Liście możemy oczywiście dodać style. Poniżej przykład:
więcej
select {
border: 1px solid #580000;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #580000;
background-color: #fdfbdd;
margin: 2px;
}
Jak wyświetlić losowy post za pomocą Custom Fields
Własne Pola czyli tzw. Custom Fields mają bardzo duże możliwości, wymagają tylko konkretnego opracowania pod daną „potrzebę”. Moją potrzebą było aby w konkretnym miejscu szablonu WP, wyświetlić zdjęcie o konkretnym rozmiarze – losowo wybrane z konkretnej kategorii postów. Zdjęcie to miało linkować do posta w którym się znajduje.
Oto rozwiązanie:
<?php
$rand_posts = get_posts('cat=5&numberposts=1&orderby=rand');
foreach( $rand_posts as $post ) : ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
<img src="<?php echo get_post_meta($post->ID, "image", true); ?>" width="150px" height="120px" title="<?php the_title(); ?>" /></a>
<?php endforeach; ?>
Musimy oczywiście zmienić cat= na konkretną kategorię naszych postów oraz numberposts= na konkretną liczbę wyświetlanych postów. Pogrubione w treści „image” – określa jaka ma być nazwa własnego pola. Można to umieścić praktycznie w dowolnym miejscu.
więcejWordPress 3.0.2
Wczoraj miała miejsce premiera nowej wersji WordPress. Oczywiście zaleca się update.
Info z oficjalnej strony:
więcejThis maintenance release fixes a moderate security issue that could allow a malicious Author-level user to gain further access to the site, addresses a handful of bugs, and provides some additional security enhancements. Big thanks to Vladimir Kolesnikov for detailed and responsible disclosure of the security issue!
