Elimină link-uri din WordPress 3.3 toolbar

Feb 01

Deși personal o găsesc destul de utilă, anumite link-uri din toolbar WordPress versiunea 3.3 nu sunt extraordinar de folositoare utilizatorului obișnuit. Snippet code-ul de mai jos, odată inclus în fișierul functions.php al temei activate în mod curent, va șterge logo-ul WordPress și link-urile incluse în meniul aferent, precum și link-ul suplimentar Visit site – poți oricum să dai click direct pe denumirea blogului.

function wps_admin_bar() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('wp-logo');
    $wp_admin_bar->remove_menu('about');
    $wp_admin_bar->remove_menu('wporg');
    $wp_admin_bar->remove_menu('documentation');
    $wp_admin_bar->remove_menu('support-forums');
    $wp_admin_bar->remove_menu('feedback');
    $wp_admin_bar->remove_menu('view-site');
}
add_action( 'wp_before_admin_bar_render', 'wps_admin_bar' );
Author Eugen
Comments No Comments

Redirect 301 cu .htaccess, exclude imaginile

Ian 02

Zilele trecute când am combinat toate blogurile mele într-acesta, mi-am dat seama că ar fi mult prea complicat să import și imaginile în noul blog. Galeriile media ale celor 2 bloguri aveau în total mai mult de 500 Mb, iar importul ar fi consumat ceva resurse și timp. Astfel că am ales să păstrez imaginile pe vechile URL-uri și să import doar articolele redirectate 301 cu .htaccess.

Redirectul 301 clasic din .htaccess are următoarea sintaxă

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.eugenpaun.ro/category/wordpress/$1 [R=301,L]

Totul funcționează corect, mai puțin imaginile care, din păcate, se vor va redirecta greșit. Așa că vom modifica sintaxa pentru a exclude fișierele imagine cu extensia jpg, gif și png. Adaptează după cum ai nevoie, funcționează și pentru alte tipuri de fișiere – HTML, PDF sau PHP.

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.png$ [NC]
RewriteCond %{REQUEST_URI} !\.jpg$ [NC]
RewriteCond %{REQUEST_URI} !\.gif$ [NC]
RewriteRule (.*) http://www.eugenpaun.ro/category/wordpress/$1 [R=301,L]

Autentificare în WordPress cu adresa de mail în loc de utilizator

Ian 02

Autenficarea cu adresa de mail în locul unui utilizator este mai intuitivă. Este mai simplu să îți aduci aminte una dintre adresele de mail pe care le folosești în mod curent decât încă un nume de utilizator. Copiază în fișierul functions.php al temei activate în mod curent codul de mai jos. Autentificarea cu nume de utilizator va funcționa în paralel.

function login_with_email_address($username) {
	$user = get_user_by_email($username);
	if(!empty($user->user_login))
		$username = $user->user_login;
	return $username;
}
add_action('wp_authenticate','login_with_email_address');

Sursa

Author Eugen
Comments 2 Comments

Oprește dezactivarea pluginurilor și schimbarea temei WordPress

Aug 09

Dacă folosești funcționalitatea de CMS a WordPress pentru a crea site-uri pentru clienți, probabil știi cât de curioși sunt unii dintre ei și de prea multe ori te-ai trezit cu tema sau pluginuri dezactivate. Astfel site-ul își va pierde din funcționalitate și fără designul personalizat la care ai muncit.

Copy/paste în functions.php pentru a opri editarea și dezactivarea pluginurilor WordPress

add_filter( 'plugin_action_links', 'slt_lock_plugins', 10, 4 );
function slt_lock_plugins( $actions, $plugin_file, $plugin_data, $context ) {
	// Remove edit link for all
	if ( array_key_exists( 'edit', $actions ) )
		unset( $actions['edit'] );
	// Remove deactivate link for crucial plugins
	if ( array_key_exists( 'deactivate', $actions ) && in_array( $plugin_file, array(
		'slt-custom-fields/slt-custom-fields.php',
		'slt-file-select/slt-file-select.php',
		'slt-simple-events/slt-simple-events.php',
		'slt-widgets/slt-widgets.php'
	)))
		unset( $actions['deactivate'] );
	return $actions;
}

Pentru a selecta un anumit plugin trebuie să introduci calea relativă la wp-content/plugins către fișierul principal al pluginului. De exemplu pentru pluginul antispam Akismet aceasta este akismet/akismet.php – caută fișierul care are exact la început declarațiile privind numele, descrierea și autorului pluginului. Înlocuiește array-ul din codul de mai sus și completează-l cu oricâte de multe pluginuri esențiale pentru buna funcționare a site-ului.

La fel pentru a opri editarea și schimbarea temei curente WordPress folosește acest cod

add_action( 'admin_init', 'slt_lock_theme' );
function slt_lock_theme() {
	global $submenu, $userdata;
	get_currentuserinfo();
	if ( $userdata->ID != 1 ) {
		unset( $submenu['themes.php'][5] );
		unset( $submenu['themes.php'][15] );
	}
}

Meniul Themes și submeniul Themes – Editor va fi disponibil doar pentru utilizatorul ID=1 care, în mod normal, ar trebui să fie developerul acelui site ce rulează sub WordPress.

Codul via Steve Taylor.

Author Eugen
Comments 2 Comments

Code snippets pentru căutarea WordPress

expand
Aug 05

Câteva code snippets care îmbunătățesc funcționalitatea de căutare într-un blog WordPress. Majoritatea se pot implementa printr-un simplu copy/paste, citiți cu atenție unde anume trebuie introdus fiecare snippet.

Exclude o anumită categorie din rezultatele căutării
Copy/paste în fișierul search.php exact înainte de loop, personalizează cu ID-ul categoriei ale cărei rezultate nu le dorește în căutare.

<?php
          query_posts($query_string . '&cat=-3');
?>

Evidențiază termenii căutării în rezultate
Adaugă în functions.php al temei WordPress activate în mod curent

function hls_set_query() {
  $query  = attribute_escape(get_search_query());
  if(strlen($query) > 0){
    echo '
      <script type="text/javascript">
        var hls_query  = "'.$query.'";
      </script>
    ';
  }
}
function hls_init_jquery() {
  wp_enqueue_script('jquery');
}
add_action('init', 'hls_init_jquery');
add_action('wp_print_scripts', 'hls_set_query');

Deschide header.php și copiază codul de mai jos, eventual personalizează culoare de background pentru evidențiere – în exemplu este D3E18A

<style type="text/css" media="screen">
    .hls { background: #D3E18A; }
  </style>
  <script type="text/javascript">
  jQuery.fn.extend({
    highlight: function(search, insensitive, hls_class){
      var regex = new RegExp("(<[^>]*>)|(\\b"+ search.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1") +")", insensitive ? "ig" : "g");
      return this.html(this.html().replace(regex, function(a, b, c){
        return (a.charAt(0) == "<") ? a : "<strong class=\""+ hls_class +"\">" + c + "</strong>";
      }));
    }
  });
  jQuery(document).ready(function($){
    if(typeof(hls_query) != 'undefined'){
      $("#post-area").highlight(hls_query, 1, "hls");
    }
  });
  </script>

Afișează numărul de rezultate al căutării
Copiază în fișierul search.php

<h2 class="pagetitle">Search Result for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' &mdash; '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h2>

Limitează căutarea numai la titlul articolelor
Pentru a căuta doar în titlurile articolelor copy/paste în functions.php

function __search_by_title_only( $search, &$wp_query )
{
    if ( empty($search) )
        return $search; // skip processing - no search term in query
    $q =& $wp_query->query_vars;
    // wp-includes/query.php line 2128 (version 3.1)
    $n = !empty($q['exact']) ? '' : '%';
    $searchand = '';
    foreach( (array) $q['search_terms'] as $term ) {
        $term = esc_sql( like_escape( $term ) );
        $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
        $searchand = ' AND ';
    }
    $term = esc_sql( like_escape( $q['s'] ) );
    if ( empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
        $search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
    if ( !empty($search) ) {
        $search = " AND ({$search}) ";
        if ( !is_user_logged_in() )
            $search .= " AND ($wpdb->posts.post_password = '') ";
    }
    return $search;
}
add_filter( 'posts_search', '__search_by_title_only', 10, 2 );

Redirectează la articol dacă există un singur rezultat al căutării
Bucata de cod următoare își are locul în functions.php

add_action('template_redirect', 'single_result');
function single_result() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
        }
    }
}

Rescrie permalink-ul paginilor de căutări cu /search/termen-cautare în loc de ?s=termen-cautare
Copy/paste în functions.php

function search_url_rewrite_rule() {
	if ( is_search() && !empty($_GET['s'])) {
		wp_redirect(home_url("/search/") . urlencode(get_query_var('s')));
		exit();
	}
}
add_action('template_redirect', 'search_url_rewrite_rule');

Dezactivează complet funcționalitate de căutare
Pentru un site static cu un număr redus de pagini copiază în functions.php

function fb_filter_query( $query, $error = true ) {
	if ( is_search() ) {
		$query->is_search = false;
		$query->query_vars[s] = false;
		$query->query[s] = false;
		// to error
		if ( $error == true )
			$query->is_404 = true;
	}
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
Author Eugen
Category Code snippets
Comments No Comments
Articole recomandate