Nejkomentovanější články na webu

Pod některými vašimi články může vzniknout zajímavá diskuze na určité téma. Počet komentářů postupně narůstá a vy byste nějak měli čtenáře upozornit, že „Tady to žije.“ WordPress vám umožní zobrazit pouze nejnovější příspěvky, ale my si vytvoříme widget, který nám umožní zobrazit ty nejkomentovanější. Návod, jak vytvořit uživatelský widget je i zde na webu. Pro samotné zobrazování nejkomentovanější pak stačí použít tento kód:

<ul>
<?php
$result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts WHERE post_status = 'publish'  ORDER BY comment_count DESC LIMIT 0, 5");
foreach ($result as $post) {
setup_postdata($post);
if ($post->comment_count != 0) { ?>
<li><a href="<?php echo get_permalink($post->ID); ?>" title="<?php echo $post->post_title; ?>">
<?php echo $post->post_title; ?></a> (<?php echo $post->comment_count ?>)</li>
<?php }
} ?>
</ul>

Dobře vám poslouží i časové omezení, které zabrání vypisování starý a neaktuálních článků, kde diskuze sice byla živá, ale nyní už skomírá. Stačí nahradit 3. řádek tímto:

$result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_date > INTERVAL -1 YEAR + NOW() ORDER BY comment_count DESC LIMIT 0, 5");

Rozšířené vyhledávání v rubrikách

WordPress sice v základním nastavení žádné rozšířené vyhledávání nemá, ale s pomocí několika chytrých funkcí můžeme tento nedostatek napravit. Zdrojový kód se bude skládat ze dvou částí – vyhledávacího formuláře a speciální šablony pro page, jež realizuje samotné vyhledávání.

Začneme tedy formulářem:

<form action='<?php bloginfo( 'url' ) ?>/hledej' method='post'>
<input type='checkbox' name='povidky'>Povídky
<input type='checkbox' name='fejetony'>Fejetony
<input type='checkbox' name='drabble'>Drabble
<input type='submit' value='Hledat'>
</form>

Action odkazuje na url, kde bude umístěna vaše speciální vyhledávací stránka. Name u každého checkboxu je také názvem vyhledávané kategorie. Kód pro šablonu stránky vypadá takto:

<?php
/*
* Template Name: Hledač
*/
?>
<?php
$cat = '';

foreach($_POST as $key => $val){
if($val == 'on') $cat .= $key . ',';
}

$the_query = new WP_Query('category_name=' . $cat);

while ( $the_query->have_posts() ) : $the_query->the_post();
echo '<li>';
the_title();
echo '</li>';
endwhile;
?>

Pokud uživatel zaškrtne políčka Povídky a Drabble, tak se uživatelovi ve výpisu zobrazí články z těchto dvou rubrik. Pokud byste chtěli spíše něco jako filtr, tedy že se zobrazí příspěvky, které jsou v rubrice Povídky a zároveň Drabble, bude třeba několik částí upravit. Už v samotném formuláři nemůžete uvádět názvy kategorií, ale jejich id. Změny na vyhledávací stránce vypadají takto:

foreach($_POST as $key => $val){
if($val == 'on') $cat[] = $key;
}

$the_query = new WP_Query(array( 'category__and' => $cat));

Jak vytvořit vlastní widget?

Vytvoření vlastního jednoduchého widgetu není vůbec těžké. Stačí pouze vědět jak na to a to po krátkém návodu budete vědět. Základem je níže uvedený kód, který vložíte do souboru šablony – functions.php Obsah si pak už můžete upravit dle libosti.

class userWidget extends WP_Widget {

function userWidget() {
parent::WP_Widget(false, $name = 'userWidget');
}

function widget($args, $instance) {
extract( $args );
$title = apply_filters('widget_title', $instance['title']);
echo $before_widget;
if ( $title ) echo $before_title . $title . $after_title;
//zde napíšete kód widgetu
echo $after_widget;
}

function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
return $instance;
}

function form($instance) {
$title = esc_attr($instance['title']);
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
<input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
</p>
<?php
}
}
add_action('widgets_init', create_function('', 'return register_widget("userWidget");'));

Články ze stejné a nadřazené kategorie

Určitě už jste někdy chtěli, aby byli pod každým článkem uveřejněny další odkazy na texty ze stejné kategorie. To není až tak těžké. Tady se dozvíte, jak je vypisovat i z nadřazené rubriky a to tak, aby se vám v seznamu nic neopakovalo dvakrát.

$categ = get_the_category($post->ID);
$not = array($post->ID);

$my_query3 = new WP_Query(array ('cat' => $categ[0]->term_id, 'showposts' => 3, 'orderby' => 'rand', 'post__not_in'=> $not));
while ($my_query3->have_posts()) {
 $my_query3->the_post();
 echo "<a href='";
 the_permalink();
 echo "'>" . get_the_title() . "</a>";
 $not[] = get_the_ID();
 }

$my_query2 = new WP_Query(array ('cat' => $categ[0]->parent, 'showposts' => 3, 'orderby' => 'rand', 'post__not_in'=> $not));
while ($my_query2->have_posts()) {
 $my_query2->the_post();
 echo "<a href='";
 the_permalink();
 echo "'>" . get_the_title() . "</a>";
 }

Celé to funguje tak, že id každého načteného článku se uloží do proměnné not a jejich zobrazování se následně zakáže v dalším vypisování. Pokud máte nějaké dotazy nebo si nevíte rady s přesným provedením, tak můžete zanechat komentář.

Stealth Publish – tajné publikování

Někdy chcete publikovat článek, který by neměl být jako součást hlavního obsahu. Hodí se to například pro příspěvky, které neodpovídají přímo tomu, co by chtěla číst cílová skupina, ale zároveň je chcete mít na webu v archivu.

Plugin Stealth Publish umí vyřadit příspěvek z RSS výstupu webu a z přehledu na hlavní stránce. Článek tedy sice publikujete, ale dozví se o něm jenom ten, co ho bude přímo potřebovat a hledat.

Stealth PublishPo aktivaci pluginu je v administraci při publikování příspěvku k dispozici zatrhávací políčko.

Jakmile jej zatrhnete, aktivují se výše zmíněné funkce pluginu. Pokud budete chtít některé z výchozího chování změnit, návod je na oficiálním webu.

Například vložením tohoto kódu do souboru šablony functions.php bude sice příspěvek z RSS vyřazen, ale v přehledu na titulní stránce webu se zobrazí.

add_filter( ‘stealth_publish_meta_key’, ‘override_stealth_publish_key’ );
function override_stealth_publish_key( $custom_field_key ) {
return ‘_my_custom_stealth-publish’;
}

Stealth Publish ke stažení

http://wordpress.org/extend/plugins/stealth-publish/

Vytvoření mapy webu – plugin PS Auto Sitemap

Na plugin pro vytvoření mapy webu – PS Auto Sitemap – jsem dostala speciální tip, který ráda zveřejním a děkuji za něj. I když už je to plugin trochu staršího data, funguje i v nejnovější verzi WordPressu.

V nastavení pluginu speciálně upozorňuji na nutnost vyplnění ID stránky či příspěvku, do kterého následně mapu webu vložíte. (Kde najít ID článku se dozvíte …