Modifikace wp_list_categories

Často potřebuji upravovat některé funkce z jádra wordpressu. Není dobré upravovat přímo funkce v jádru, po aktualizaci se Vám změny pravděpodobně ztratí.

Ideální je funkce jádra modifikovat v šabloně a to v souboru function.php.

Níže uvádím ukázku odstranění atributů v kategoriích:

 

<?php
function categories_without_title_attribute() {
$categories = wp_list_categories('echo=0');
$categories = preg_replace('/title="(.*?)"/','',$categories);
echo $categories;
}
?>

Užitečné tipy pro wordpress

Seznam užitečných tipů, které usnadní práci a vývoj v redakčním systému wordpress:

Shortcode
Lze využít pro uživatelské vkládání nejrůznějšího obsahu přímo do postu, stránek.
Nejdříve si v souboru function.php vytvoříme a zaregistrujeme libovolnou funkci, kterou chceme aplikovat a vložit do článku.

function hello() {
    return 'Hello, World!';
}
 
add_shortcode('nase_fce', 'hello');

Následně můžeme naši fci volat při tvorbě příspěvku:

[nase_fce]

Interakce s DB

Získání záznamů:

<!--?php    $posts = $wpdb--->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future'
   AND post_type='post' ORDER BY post_date ASC LIMIT 0,4")
 
   // Echo the title of the first scheduled post
   echo $posts[0]-&gt;post_title;
?&gt;

Získání řádku:

<!--?php    $posts = $wpdb--->get_row("SELECT ID, post_title FROM wp_posts WHERE post_status = 'publish'
   AND post_type='post' ORDER BY comment_count DESC LIMIT 0,1")
 
   // Echo the title of the most commented post
   echo $posts-&gt;post_title;
?&gt;

Získání sloupce:

<!--?php    $posts = $wpdb--->get_col("SELECT ID FROM wp_posts WHERE post_status = 'publish'
   AND post_type='post' ORDER BY comment_count DESC LIMIT 0,10")
 
   // Echo the ID of the 4th most commented post
   echo $posts[3]-&gt;ID;
?&gt;

Získání konkrétní hodnoty:

<!--?php    $email = $wpdb--->get_var("SELECT user_email FROM wp_users WHERE user_login = 'danielpataki' ")
 
   // Echo the user's email address
   echo $email;
?&gt;

Vložení dat do DB:

$wpdb-&gt;insert( $table, $data, $format);

Vložení dat do DB ukázka:

<!--?php    $wpdb--->insert($wpdb-&gt;usermeta, array("user_id" =&gt; 1, "meta_key" =&gt; "awesome_factor", "meta_value" =&gt; 10), array("%d", %s", "%d"));
 
   // Equivalent to:
   // INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES (1, "awesome_factor", 10);
?&gt;

Update dat v DB

$wpdb-&gt;update( $table, $data, $where, $format = null, $where_format = null );

Update dat v DB ukázka:

$wpdb-&gt;update( $wpdb-&gt;posts, array("post_title" =&gt; "Modified Post Title"), array("ID" =&gt; 5), array("%s"), array("%d") );

Vložení vlastního loga na loginpage

add_action( 'login_head', 'ilc_custom_login');
function ilc_custom_login() {
	echo '<style type="text/css">
	h1 a { background-image:url('. get_stylesheet_directory_uri() . '/images/login-logo.png' . ') !important; margin-bottom: 10px; }
	padding: 20px;}
	</style>
	<script type="text/javascript">window.onload = function(){document.getElementById("login").getElementsByTagName("a")[0].href = "'. home_url() . '";document.getElementById("login").getElementsByTagName("a")[0].title = "Go to site";}</script>';
}

Změna počtu skov v excerpt funkci

add_filter('excerpt_length', 'ilc_excerpt_length');
function ilc_excerpt_length( $length ){
	return 10;
}

WordPress – pár užitečných triků pro vykreslování smyček s posty

Posty publikované mezi daty
Chcete-li zobrazit posty vytvořené v určitém časové rozmezí, použijte následující smyčku:

<!--?php
    function filter_where($where = '') {
          $where .= " AND post_date -->= '2012-04-18' AND post_date &lt;= '2012-05-01'";
     return $where;
   }
 add_filter('posts_where', 'filter_where');
 query_posts($query_string);
 while (have_posts()) :
       the_post();
       the_content();
 endwhile;
 ?&gt;

Posty s náhledem prvního obrázku v článku
Nejdříve si do souboru function.php vložíme funkci, která nám vrátí link na první obrázek v článku:

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('//i', $post-&gt;post_content, $matches);
  $first_img = $matches [1] [0];
 
  if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}

Následně můžeme naší fci volat ve smyčce:

<!--?php
  if (have_posts()) :
      while (have_posts()) : the_post(); ?-->
        <a class="img-loop" title="&lt;?php the_title(); ?&gt;" href="&lt;?php the_permalink();?&gt;">
        <img src="http://www.remake.cz/blog/wp-content/uploads/images/&lt;?php echo catch_that_image() ?&gt;" alt="&lt;?php the_title(); ?&gt;" />
        </a>
    endwhile;
endif;
?&gt;

WordPress debugging

Při vytváření šablon a pluginů pro wordpress je dobré mít zapnutý debugging, který je standardně vypnutý v souboru wp-config.php. Viz ukázka:

wp-config.php

define('WP_DEBUG', false);

Zapnout debugging je velice jednoduché, stačí v wp-config.php přepsat zmiňovaný řádek následujícím kódem:

// Turns WordPress debugging on
define('WP_DEBUG', true);
 
// Tells WordPress to log everything to the /wp-content/debug.log file
define('WP_DEBUG_LOG', true);
 
// Doesn't force the PHP 'display_errors' variable to be on
define('WP_DEBUG_DISPLAY', false);
 
// Hides errors from being displayed on-screen
@ini_set('display_errors', 0);

Následně můžete využívat a nahlížet do souboru wp-content/debug.log.