Rozšíření šablony o editovatelná menu

WordPress nabízí možnost využití  menu upravitelných z administrace. To je velký krok kupředu směrem k CMS. Pokud se učíte, jak tvořit šablony pro WP nebo jen máte starou šablonu a potřebovali byste ji modernizovat o tuto funkcionalitu, pomůže vám tento rychlý exkurz.

Předně je nutné v souboru functions.php nové mezu zaregistrovat. Stačí vložit následující kód:

if ( function_exists( 'register_nav_menus' ) ) {
	register_nav_menus(
		array(
	  		'primary_menu' => 'Hlavní menu',
	  		'foot_menu' => 'Menu v patičce'
		)
	);
}

Jistě jste si všimli, že jsme tímto příkazem zaregistovali hned dvě navigační menu. Hlavní menu a menu v patičce. Pokud byste chtěli jen jedno, odstraňte řádek “‘foot_menu’ => ‘Menu v patičce’”, nebo naopak ukončete tento řádek čárkou a přidejte ješte jeden. Dbejte na to, že první parametr (tedy ‘foot_menu’ a ‘primary_menu’) musí být unikátní. Druhý slouží pro vaši orientaci, takže ideálně by měl být také unikátní, ale WordPress na tom netrvá.

Tímto jste si zaregistrovali menu a nyní již naleznete v administraci navigačních menu (Vzhled->Menu) nalevo v boxu své dvě pozice (“Hlavní menu”, “Menu v patičce”) a lze vytvářet menu a přiřazovat je těmto dvoum pozicím.

Nyní tedy již zbývá pouze nechat zobrazit menu v šabloně. Je nutné zvolit místo, kde chcete menu zobrazit – to je na vás. Pokud modernizujete starou šablonu, budete nejspíš nahrazovat funkci “wp_list_categories” umístěnou v souboru header.php nebo sidebar.php.

Pro vložení menu do šablony použijte níže uvedený kód. Všechny uvedené parametry jsou parametry defaultní a proto, když je nebudete měnit, můžete je, pro zkrácení kódu, odstranit. Funkce wp_nav_menu má ještě další parametry (menu,walker,falback_cp), ale ty jsou pro začátečníka zbytečně komplikované a zřítka využitelné. Koho by zajímaly, nechť se obrází na kodex

<?php $args = array(
  'theme_location'  => 'primary_menu', //unikátní identifikátor menu nastavený v functions.php
  'container'       => 'div', //nebo 'nav' nebo false. Určuje, co se má použít jako element obklopující element UL samotného menu. False znamená, že žádný takový element nebude
  'container_class' => 'menu-{menu slug}-container', //třída (class) elementu UL obklopující samotné menu
  'container_id'    => '', //parametr ID elementu obklopujícího element UL samotného menu
  'menu_class'      => 'menu',  //třída (class) elementu UL obklopujcí menu
  'menu_id'         => 'nav', //parametr ID elementu UL obklopující menu
  'echo'            => true, //má se menu vypsat, nebo jen vrátit pomocí fce return?
  'before'          => '', //text před HTML tagem <a>
  'after'           => '', //text za HTML tagem </a>
  'link_before'     => '', //text před samotným textem odkazu
  'link_after'      => '', //text za samotným textem odkazu
  'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>', //HTML markup vlastního menu
  'depth'           => 0, //do kolikáté úrovně zobrazovat podstránky. 0 znamená všechny úrovně
);
wp_nav_menu( $args ); ?>

Chybějící odkazy ve WordPress 3.5

Pokud si nainstalujete nový WordPress 3.5*, tak budete marně hledat v administrátorské postranní liště položku Odkazy (anglicky Links). WordPress tuto změnu dopředu avizoval a já jsem na to také účastníky školení WordPressu upozorňoval. Chybí-li Vám tato funkcionalita – doporučuji plugin Link Manager. * Používáte-li odkazy na svém webu a WordPress na novou verzi pouze upgradujete, […]

Zjištění ID rodičovské kategorie

Potřebujete-li v loopu např. ve výpisu příspěvků z rubriky (archivu) zjistit u každého příspěvku ID kořenové rubriky (tedy jsou-li rubriky vnořené), vložte do *functions.php* funkci

/—code php
/*
* Returns ID of top-level parent category, or current category if you are viewing a top-level
*
* @param string $catid Category ID to be checked
* @return string $catParent ID of top-level parent category
*/
function pa_category_top_parent_id ($catid) {
while ($catid) {
$cat = get_category($catid); // get the object for the catid
$catid = $cat->category_parent; // assign parent ID (if exists) to $catid
// the while loop will continue whilst there is a $catid
// when there is no longer a parent $catid will be NULL so we can assign our $catParent
$catParent = $cat->cat_ID;
}
return $catParent;
}
\—

a v loopu si ji pak jen zavoláme pro hodnotu ID:

/—code php
$catid = get_query_var(‚cat‘);
$topcat = pa_category_top_parent_id ($catid);
// a můžeme použít třeba v podmínce
if ($topcat == konkretni-hodnota-id): neco-udelej;
\—

„Zdroj »“:http://alex.leonard.ie/2011/04/20/wordpress-get-id-of-top-level-parent-category/

Počet přečtení článku za pomoci Google Analytics

Pokud u svých článků chcete zobrazovat počet přečtení, tak WordPress vám nabídne velké množství pluginů, které můžete použít. Velkou nevýhodou je ovšem fakt, že začínáte lidově řečeno od nuly. I když už vaším blogem prošly tisíce lidí, tak u všech článků vám bude svítit děsivá nula. Pokud k měření návštěvnosti používáte Google Analytics, mám pro […]

WYSIWYG pro popis uživatele

Následující kratičký kód zobrazí #WYSIWYG editor u popisu autora u uživatelského profilu:

Kód stačí přidat do function.php ve vašem template:

<?php
/**
 * WYSIWYG pro uzivatelsky profil WordPress
 *
 * @author Roman Ozana <ozana@omdesign.cz>
 */
class CustomUserProfile {

	/** @var array */
	private $tinymceOptions = array(
		'teeny' => true,
		'quicktags' => false,
		'media_buttons' => false, 'textarea_rows' => 8,
		'wpautop' => false,
		'tinymce' => array(
			'theme_advanced_buttons1' => 'p, bold, italic, ul, |,link,unlink,code',
			'theme_advanced_buttons2' => '',
			'theme_advanced_buttons3' => '',
			'theme_advanced_buttons4' => '',
		),
	);

	public function __construct() {
		add_action('show_user_profile', array($this, 'initDescriptionWysywig'));
		add_action('edit_user_profile', array($this, 'initDescriptionWysywig'));
	}

	/**
	 * Wysywig editor take pro description
	 *
	 * @param $options
	 */
	public function initDescriptionWysywig($options) {
		if ( ! class_exists('_WP_Editors' ) )
			require_once( ABSPATH . WPINC . '/class-wp-editor.php' );

		$options = _WP_Editors::parse_settings('description', $this->tinymceOptions);
		_WP_Editors::editor_settings('description', $options);
		wp_print_styles('editor-buttons');
	}

}
new CustomUserProfile();

#wordpress #php

Jak nainstalovat češtinu do WordPressu

Ano, jak všichni správně víte, tak WordPress je pravidelně překládán do češtiny (v poslední době to trochu vázne, ale měl by to být jen dočasný problém). Ovšem, může se stát, že si stáhnete anglickou verzi nebo vám hosting sám vytvoří cizojazyčnou mutaci. Vy si web nastavíte, vložíte články a ejhle, uvědomíte si, že potřebujete nahodit […]

Začínáme s wordpressem, 7.část – V administraci příspěvků

Dnes si ukážeme chytré úpravy, které nám usnadní pohyb a především listování v administraci. To nejen v příspěvcích, ale i ve stránkách, odkazech či komentářích, které využívají stejný interface. Jako ve většině případů i zde můžete použít pluginy, které váš WordPress patřičně vylepší. A jak může vypadat takový upravený výpis? Všimněte si především tlačítka “Nastavení […]