sábado, 18 de junio de 2011

Recopilacion de Funciones

5.0
Antiguedad: Abr 2010
Mensajes: 115
offline

Publicado hace 3 meses
#
tal vez a alguien le pueda ser de utilidad algun trozo de codigo que cumple algun funcion poco comun o no tan conocido a veces...casi todo el codigo esta provado que funciona pero siempre puede haber algun problema ..asi que cualquier cosa me avisan y tratare de ayudar en lo que pueda. un saludo para todos.
Contador de visitas Simple. sin necesidad de usar un plugin como wp-post-views
cumple la misma funcion. colocarlo en single.php ANTES del Loop
< ?php get_header();update_visitas($post- >ID); ? >



y colocar este codigo en functions.php

function update_visitas($post_ID=0){
global $wpdb;
        if(is_numeric($post_ID)){
        $wpdb- >query("UPDATE $wpdb- >postmeta SET meta_value=meta_value+1
        WHERE meta_key='visitas' AND post_id=('"
.$post_ID."') LIMIT 1");
    }
}

URL personalizadas usando la funcion wp-rewrite
obviamente agregar este codigo en functions.php

global $wp_rewrite;
$wp_rewrite- >author_base = 'vendedor';
$wp_rewrite- >category_base = 'categoria';
$wp_rewrite- >tag_base = 'etiquetas';
$wp_rewrite- >search_base = 'buscar';
$wp_rewrite- >flush_rules();

Eliminar Palabras Prohibidas (Filtro)
es la misma funcion que vi en ayuda wordpress con alguna pequeña modificacion y la posibilidad de ir agregando
palabras a la lista desde el panel de control del theme.
Donde dice "My_theme_bad_words" lo deben reemplazar con el nombre de la funcion que use su theme..eso aquellos que conocen como funcionan los control_panel de los themes los van a entender facil.

function palabra_prohibida($content) {

    $content = strtolower(trim($content));//Pone todo el texto en minisculas.
    $content = ucfirst($content);//Pone la primer letra en mayusculas.
    $str = explode(";",get_option("My_theme_bad_words","palabra_ejemplo"));//la palabra a reemplazar.
    $newstr = "***";//la nueva palabra .
    $html = str_ireplace($str, $newstr, $content);
    //$html = preg_replace("[^A-Za-z0-9]"," ", $content);
    return $html;
}

add_filter('the_title', 'palabra_prohibida',1); //Reemplaza la palabra en el título
add_filter('the_content', 'palabra_prohibida',1); //Reemplaza la palabra en el contenido
add_filter('the_excerpt', 'palabra_prohibida',1); //Reemplaza la palabra en los extractos
add_filter('comment_text', 'palabra_prohibida',1); //Reemplaza la palabra en los comentarios

Filtro de Busqueda para Custom Fields
agregar este codigo en functions.php y reemplazar las palabras a buscar por el nombre de sus custom field o campos
personalizados

// Removes pages from search
function com_search_filter($query) {
    if ($query- >is_search) { $query- >set('post_type', 'post'); }
    return $query;
}

function custom_search_join($join) {
    if ( is_search() &amp;&amp; isset($_GET['s'])) {
        global $wpdb;
       $join = " LEFT JOIN $wpdb- >postmeta ON $wpdb- >posts.ID = $wpdb- >postmeta.post_id ";
    }
    return($join);
}

function custom_search_groupby($groupby) {
    if ( is_search() &amp;&amp; isset($_GET['s'])) {
        global $wpdb;
        $groupby = " $wpdb- >posts.ID ";
    }
    return($groupby);
}

function custom_search_where($where) {
    $old_where = $where;
    if (is_search() &amp;&amp; isset($_GET['s'])) {
        global $wpdb;
        $customs = Array('contact_name', 'price', 'phone', 'place','type','email','images');//ACA REEMPLAZAR LAS PALABRAS
        $query = '';
        $var_q = stripslashes($_GET['s']);
        if ($_GET['sentence']) {
            $search_terms = array($var_q);
        }
        else {
            preg_match_all('/".*?("|$)|((?< =[\\s",+])|^)[^\\s",+]+/', $var_q, $matches);
            $search_terms = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]);
        }
        $n = ($_GET['exact']) ? '' : '%';
        $searchand = '';
        foreach((array)$search_terms as $term) {
            $term = addslashes_gpc($term);
            $query .= "{$searchand}(";
                        $query .= "($wpdb- >posts.post_title LIKE '{$n}{$term}{$n}')";
            $query .= " OR ($wpdb- >posts.post_content LIKE '{$n}{$term}{$n}')";
            foreach($customs as $custom) {
                $query .= " OR (";
                $query .= "($wpdb- >postmeta.meta_key = '$custom')";
                $query .= " AND ($wpdb- >postmeta.meta_value  LIKE '{$n}{$term}{$n}')";
                $query .= ")";
            }
            $query .= ")";
            $searchand = ' AND ';
        }
        $term = $wpdb- >escape($var_q);
        if (!$_GET['sentense'] &amp;&amp; Count($search_terms) > 1 &amp;&amp; $search_terms[0] != $var_q) {
            $search .= " OR ($wpdb- >posts.post_title LIKE '{$n}{$term}{$n}')";
            $search .= " OR ($wpdb- >posts.post_content LIKE '{$n}{$term}{$n}')";
        }

        if (!empty($query)) {
            $where = " AND ({$query}) AND ($wpdb- >posts.post_status = 'publish') ";
        }
    }
    return($where);
}
add_filter('posts_join', 'custom_search_join');
add_filter('posts_where', 'custom_search_where');
add_filter('posts_groupby', 'custom_search_groupby');
add_filter('pre_get_posts','com_search_filter');

Bloquear Acceso al Dasboard para usuarios de nivel inferior a ADMIN
Una funcion interesante para mejorar un poco mas la seguridad de aquellos que no quieren que los usuarios no accedan al backend de wordpress excepto el admin.
Obiamente va en functions.php

// Bloquea el acceso al dasboard a los usuarios except el admin
$access_min_type = 'edit_others_posts';
$admin_redirect_to = get_option('siteurl');//direccion a la cual redirecciona ej: .'/my-account/'
if (defined('ACCESS_MIN_TYPE'))
    $access_min_type = ACCESS_MIN_TYPE;
if (defined('ADMIN_REDIRECT_TO'))
    $admin_redirect_to = ADMIN_REDIRECT_TO;
if (!function_exists('wpba_init')) {
    function wpba_init() {
        global $access_min_type, $admin_redirect_to;
        if (strpos(strtolower($_SERVER['REQUEST_URI']),'/wp-admin/') !== false) {
            if (!current_user_can($access_min_type)) {
                if ($admin_redirect_to == '') {
                    $admin_redirect_to = get_option('siteurl');
                }
                // Send a temporary redirect
                wp_redirect($admin_redirect_to,302);
            }
        }
    }
}
add_action('init','wpba_init',0);

Filtrar la busqueda por categorias
Codigo php con javascript.
< form action="< ?php bloginfo('url'); ? >/" method="get" >
    < ?php
   $select = wp_dropdown_categories('show_option_none=Seleccionar categoria&amp;show_count=1&amp;orderby=name&amp;echo=0&amp;selected=6');
   $select = preg_replace("#< select([^ >]*) >#", "< select$1 onchange='return this.form.submit()' >", $select);
   echo $select;
 ? >
    < noscript >< input type="submit" value="View" / >< /noscript >
< /form >

Mostrar que usuarios estan conectados

function who_is_online($args=NULL)
{
    global $wpdb;
    $who_is_online_table = $wpdb- >prefix . 'who_is_online';
    $guests_sql = 'SELECT COUNT(*) AS user_count FROM ' . $who_is_online_table . ' WHERE user_id IS NULL;';
    $members_sql = 'SELECT COUNT(user_id) AS user_count FROM ' . $who_is_online_table . ';';
    $result = $wpdb- >get_row($members_sql);
    $members = $result- >user_count;
    $result2 = $wpdb- >get_row($guests_sql);
    $guests = $result2- >user_count;
    return $members + $guests;
}//FIN DE LA FUNCION


Para mostrar la funcion usar
echo who_is_online(1)

Mostrar Custom Fiel Mismo Nombre y Multiples Valores a modo de lista
Ejemplo:

< ?php $ingredients = get_post_meta($post- >ID, 'Ingredient', false);? >

< ?php foreach($ingredients as $ingredients)
  { echo '
<li>'
. $ingredients . '</li>
'
; } ? >

Mostrar las Categorias Hijo Solamente
< div class="box" >
    < h2 >Categorias Hijo< /h2 >
<ul>
       < ?php $cat_name = get_cat_ID('NOMBRE CATEGORIA PADRE') ? >
       < ?php wp_list_categories('title_li=&amp;orderby=name&amp;child_of=' . $cat_name); ? >
      </ul>

< /div >

Aplicar un estilo diferente segun el valor de un custom field
Obviamente deben tener previamente creado un estilo css en su hoja de estilos (style.css) con el
mismo nombre del custom field que vallan a usar
< div class="< ?php echo get_post_meta($post- >ID,'post', true) ? >" id="post-< ?php the_ID(); ? >" >

Mostrar la cantidad de resultados obtenidos en una busqueda
Este codigo va en la pagina que esten utilizando para mostrar los resultados de busqueda segun su theme, puede ser
en index.php o alguna pagina personalizada-
< ?php if (is_search()) : ? >
        < ?php // Muestra el numeros de resultados que se obtiene de una busqueda
                $results = new WP_Query("s=$s&amp;showposts=-1");
                $term = wp_specialchars($s, 1);
                $number = $results- >post_count;
                wp_reset_query();? >
        < h1 >< ?php echo $number; ? > < ?php _e('Resultados para ',"wpct"); ? > " < ?php echo $term; ? > "< /h1 >
< ?php endif; ? >

Insertar Nota o el contenido que quieras automaticamente al final de cada post (single.php)
Podes usarlo para agregar publicidad o enlaces que quieras conservar siempre al final de cada post de una manera automatica. esto se vizualiza unicamente en single.php. podes aplicarle un estilo personalizado usando css y este codigo
va en functions.php
function insert_note($content) {
        if(!is_feed() &amp;&amp; !is_home()) {
                $content.= "< div class='content' >";
                $content.= "ACA VA EL CONTENIDO QUE QUIERAS MOSTRAR";
                $content.= "< /div >";
        }
        return $content;
}
add_filter ('the_content', 'insert_note');

Bueno eso es todo por ahora tengo algunos mas pero tengo que probarlos primero, espero que a alguien les sea de utilidad.

No hay comentarios:

Publicar un comentario