Zobrazení posledních příspěvků na Pinterest profilu pomocí Wordpress widgetu - Affinite.io CZ

Sociální sítě jsou fenoménem dneška. Pokud vás to také neminulo a využíváte kromě Facebooku, Twitteru a Google+ také Pinterest, bude se vám hodit přidat do vašeho webu výpis posledních Pins. V tomto návodu vám ukáži, jak vytvořit výpis posledních devíti příspěvků pomocí RSS feedu vašeho profilu na Pinterest jako widget šablony. Nejsem příznivce bezhlavého používání pluginů a proto jej vložíme pomocí souboru functions.php přímo do šablony.

V jednom z předchozích návodů jsme si ve složce šablony vytvořili složku widgets, abychom udrželi v souborech pořádek. Pokud tam složku nemáte, tak si ji vytvořte. v této složce si vytvořte další složku s názvem widget-pinterest-feed. Následně si vytvoříme dva prázdné soubory, jeden s názvem widget-pinterest-feed-php a druhý vm-pinterest-feed.css.

Do widget-pinterest-feed.php umístíme kód samotného widgetu, začneme definicí:

/*-------------------------------------------------

	Plugin Name: Pinterest feed
	Plugin URI:
	Description: Recent pins
	Version: 1.0
	Author: Musilda
	Author URI: http://musilda.cz

--------------------------------------------------*/

Tím jsme zaregistrovali plugin, díky tomuto kódu WordPress pozná co je v souboru a bude k němu tak přistupovat.
Nyní si přidáme soubor se styly, který je sice prázdný, ale protože nechceme být prasátka, budeme mít hezky všechny styly v externím souboru.

function vm_pin_stylesheet() {
        wp_register_style( 'pinterest-feed', get_template_directory_uri()
        . '/widgets/widget-pinterest-feed/vm_pinterest_feed.css' );
        wp_enqueue_style( 'pinterest-feed' );
}
add_action( 'wp_head', 'vm_pin_stylesheet' );

Jako další krok zaregistrujeme funkci widgetu a pomocí hooku widget_init jej zpřístupníme v administraci widgetů.

// Register widget
function vm_pinterest_feed_widgets() {
    register_widget( 'vm_Pinterest_Feed_Widget' );
}

// Add function to widgets_init that'll load our widget
add_action( 'widgets_init', 'vm_pinterest_feed_widgets' );

Jako další krok připravíme třídu, která rozšiřuje třídu WP_Widget a do ní umístíme všechny funkce našeho widgetu:

// Widget class
class vm_pinterest_feed_widget extends WP_Widget {
}

Tím máme vše připraveno a můžeme začít psát samotný widget. Dejte pozor, aby všechny funkce byly uvnitř třídy, tedy mezi složenými závorkami.

Nejprve vytvoříme funkci widgetu

function vm_Pinterest_Feed_Widget() {

	// Widget settings
	$widget_ops = array(
		'classname' => 'vm_pinterest_feed_widget',
		'description' => __('A widget display latest pins in sidebar.', 'theme')
	);

	// Widget control settings
	$control_ops = array(
		'width' => 250,
		'height' => 250,
		'id_base' => 'vm_pinterest_feed_widget'
	);

	// Create the widget
	$this->WP_Widget( 'vm_pinterest_feed_widget', __('Pinterest feed', 'theme'),
        $widget_ops, $control_ops );

}

Tím jsme k widgetu přidali popis, který se bude zobrazovat v administraci a definovali jsme šířku boxu widgetu, který se zobrazuje, pokud je widget umístěn a vy jej rozbalíte pro úpravu údajů. Tato definice se hodí, pokud budete vytvářet widgety s více parametry a budete pro ně potřebovat více místa.

V dalším kroku vytvoříme funkci pro zobrazení samotného widgetu i s výpisem posledních pins

function widget( $args, $instance ) {
  extract( $args );

  // Our variables from the widget settings
  $title = apply_filters('widget_title', $instance['title'] );

  $pinterest_feed = fetch_feed( "http://pinterest.com/" .
  $instance['pinterest_username'] . "/feed.rss" );

  if (!is_wp_error( $pinterest_feed ) ) :
        $maxitems = $pinterest_feed->get_item_quantity( $instance['pinterest_quantity'] );
	$pinterest_feed = $pinterest_feed->get_items(0, $maxitems);
	endif;


  if ( !empty( $pinterest_feed ) ) {

	// Before widget (defined by theme functions file)
	echo $before_widget;

	// Display the widget title if one was input
	if ( $title )
	echo $before_title . $title . $after_title;


 echo '
    '; foreach ( $pinterest_feed as $item ) { $pinterest_content = $item->get_content(); $pinterest_content = str_replace( '>','>',$pinterest_content ); $pinterest_content = str_replace( '<','<',$pinterest_content ); $pinterest_content = str_replace( '<a','<a target="_blank"',$pinterest_content ); $pinterest_content = str_replace( 'href="','href="http://www.pinterest.com', $pinterest_content ); $pinterest_content = strip_tags( $pinterest_content, "," ); $pinterest_content_array = explode( '', $pinterest_content ); $pinterest_content = $pinterest_content_array[0]; ?>
      <a href='get_permalink() ); ?>' title='get_date('j F Y | g:i a'); ?>'>
    <?php } echo "
"; // After widget (defined by theme functions file) echo $after_widget; } }

Výše uvedený kód nejprve načte RSS fedd, z kterého pak vypíše posledních 9 pins.
Protože budeme do widgetu vkládat Pinterest username a počet příspěvků, je nutná funkce pro aktualizaci proměnných po odeslání formuláře. Ta není nijak složitá

function update( $new_instance, $old_instance ) {
 $instance = $old_instance;

 // Strip tags to remove HTML (important for text inputs)
 $instance['title'] = strip_tags( $new_instance['title'] );
 $instance['pinterest_username'] = strip_tags( $new_instance['pinterest_username'] );
 $instance['pinterest_quantity'] = strip_tags( $new_instance['pinterest_quantity'] );

 return $instance;
}

Ukládáme aktuální hodnoty jen pro tři proměnné, nic více nepotřebujeme.

Poslední funkcí, kterou doplníme do našeho widgetu je samotný výpis formuláře

function form( $instance ) {

	// Set up some default widget settings
	$defaults = array(
		                'title' => 'Recent pins',
                    'pinterest_username'=>'musilda',
                    'pinterest_quantity'=>'9'
	                 );

	$instance = wp_parse_args( (array) $instance, $defaults );
   ?>

<label for="get_field_name( 'title' ); ?>">
<input id="get_field_id( 'title' ); ?>" name="get_field_name( 'title' ); ?>" type="text" value="" />

<label for="get_field_name( 'pinterest_username' ); ?>">
<input id="get_field_id( 'pinterest_username' ); ?>" name="get_field_name( 'pinterest_username' ); ?>" type="text" value="" />

<label for="get_field_name( 'pinterest_quantity' ); ?>">
<input id="get_field_id( 'pinterest_quantity' ); ?>" name="get_field_name( 'pinterest_quantity' ); ?>" type="text" value="" />

<?php }

Předposlední krok, který musíme udělat, je definování css stylů pro widget, které uložíme do souboru vm_pinterest_feed.css

ul.easy-pinterest{float:left;
  width:100%;
  margin-bottom:20px;
}
ul.easy-pinterest ol {float:left;
  width: 75px;
  height: 75px;
  overflow: hidden;
  margin: 0px 8px 8px 0px;
  background: #efefef;
  display:table-cell;
  vertical-align:middle;
}

ul.easy-pinterest ol img {max-width: 100%;
  height: auto;
}
ul.easy-pinterest ol p {display: none;
}

Tím jsme zdárně dokončili widget pro zobrazování Recent pins v sidebaru a do functions.php vložíme následující řádek

include 'widgets/widget-pinterest-feed/widget-pinterest-feed.php';

Funkční widget najdete zde http://www.novy.8u.cz/

Raibon premium responsivní blogová šablona od Themes4all.com
Raibon premium responsivní blogová šablona od Themes4all.com
31 Kvě, 2013
Landingpages Wordpress plugin s českou lokalizací
Landingpages Wordpress plugin s českou lokalizací
03 Čvn, 2013

Looking for something?