Sociální sítě v tabech

Po nějakém čase jsem narazila opět na plugin, který by mohl patřit k oblíbeným. V rámci hledání úspory místa se jistě hodí, pokud často používané výpisy posledního dění na Facebooku, Twitteru, Google+ a RSS budou prakticky na jednom místě, tj. s možností přepínat mezi jednotlivými tabulkami.

Plugin, respektive widget Social Media Tabs má klasické nastavení sociálních pluginů. Do widgetu …

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");'));

Rozšířené vkládání komentářů

**U Extended Comment**
„http://wordpress.org/extend/plugins/u-extended-comment/“:http://wordpress.org/extend/plugins/u-extended-comment/

– Users can edit or delete their comment in front-end.
– Users can post comment privately.
– HTML Editor(tinyMCE) provide various configuration.
– Attachment uploader.
– Selective enabling each component.

Č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ář.