• User

    Aiuto su Php limit

    Salve a tutti, utilizzo wordpress ed ho da poco modificato la pagina categorie a mio piacimento escludendo la visualizzazione di alcune categorie.

    Attualmente il mio codice si presenta così:

    [PHP]// Definire l'elenco degli ID da escludere
    $exclude = Array(1,9,32);
    foreach((get_the_category()) as $category) {
    if (!in_array($category->cat_ID, $exclude)) {
    echo "<a href='/$category->category_nicename'> $category->cat_name </a>";
    }
    }
    ?>
    [/PHP]

    Come posso fare per limitare l'echo a soltanto una categoria o limitarli le lettere?


  • Moderatore

    Ciao tosiualex,
    scusami ma non ho ben capito il tuo problema.

    Questo tuo codice non ti funziona?
    Mi spieghi il tuo obiettivo qual'è? Cos'è che intendi fare?


  • User

    Ciao, grazie dell'interessamento.

    Il codice funziona perfettamente e, come puoi vedere c'è un echo.

    Vorrei limitare quell'echo, ad esempio:

    Un echo attuale probabile potrebbe essre: Mela, Pera, Banana

    Vorrei limitarlo solo a Mela, senza che gli altri 2 vengano visualizzati..


  • Moderatore

    Ok, se ho capito bene vuoi visualizzare il nome di un'unica categoria?

    Se è questo che vuoi ottenere, allora ti basta utilizzare get_the_category_by_ID senza utilizzare l'array di esclusione.

    Come descritto su Wordpress.org (http://codex.wordpress.org/Function_Reference/get_the_category_by_ID), per visualizzare una sola categoria puoi utilizzare il seguente codice:

    [PHP]
    echo get_the_category_by_ID( $cat_ID );
    [/PHP]

    Dove al posto di "$cat_ID" metti l'id della categoria che intendi visualizzare.


  • User

    Grazie giapox, funziona alla grande!!

    Ora ho un altro simile problema su questo codice:

    [PHP]<?php get_header(); ?>

    <div id="bigcolumn">

    <?php
    $cat = get_query_var('cat');
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts('showposts=15&paged=' . $paged .'&cat='.$cat);
    $wp_query->is_archive = true; $wp_query->is_home = false;
    ?>
    <?php if (have_posts()) : ?>
    
    <div class="page-all">
    <div class="page-top">
    <div class="containerI">
    
    <div class="sitenav">
    <a href="<?php bloginfo('url'); ?>"><?php _e('Home','cmfy'); ?></a>&nbsp;&nbsp;&raquo;&nbsp;&nbsp;<?php single_cat_title(); ?>
    </div>
    
    <div class="bigdiv">
    	
    
    <ul class="vidlist">
    <?php while (have_posts()) : the_post(); ?>
    <li id="post-<?php the_ID(); ?>">
    

    <span class="title"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php short_title(25); ?></a></span>
    <div class="videothumb"><?php show_thumb($comfy['img_videos_w'],$comfy['img_videos_h'],$comfy['crop'],$comfy['cropfrom'],$comfy['quality']); ?><div class="playit"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"></a></div></div>
    <div class="clear"></div>
    » Genere: <?php
    // Definire l'elenco degli ID da escludere
    $exclude = Array(28,22218,22291,22289,22292,9292,22296);
    $_LIMIT = 0;
    foreach((get_the_category()) as $category) {

    if (!in_array($category->cat_ID, $exclude) && !$_LIMIT > 0) {
    echo "<a href='/$category->category_nicename'> $category->cat_name </a>";
    $_LIMIT++;
    }

    }
    ?>

    <?php if(function_exists('the_ratings')) { echo '<span class="videorating">'.__('Rated:','cmfy'); the_ratings(); echo '</span>'; } ?>
    </li>
    <?php endwhile; ?>
    </ul><div class="clear"></div>
    
    <!-- Plugin Navigation -->
    

    <?php if(function_exists('wp_page_numbers')) : wp_page_numbers(); endif; ?>

    <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

        <!-- End -->
    
    </div>
    </div>
    </div>
    </div><!-- bigdiv -->
    <div class="page-bottom"></div>
    
    <?php else : ?>
    
    <!-- Not found? -->
    <div class="page-all">
    <div class="page-top">
    <div class="containerI">
    
    <div class="sitenav">
    <a href="<?php bloginfo('url'); ?>"><?php _e('Home','cmfy'); ?></a>&nbsp;&nbsp;&raquo;&nbsp;&nbsp;<?php _e('404 Error','cmfy'); ?>
    </div>
    
    <div class="bigdiv">
    
    <div class="post">
    <h2><?php _e('Cannot find the page you are looking for.','cmfy'); ?></h2>
    <p><?php _e('Use the search form below to find your article or post or browse our latest articles to read something more interesting.','cmfy'); ?></p>
    <form class="find" method="get" action="<?php bloginfo('url'); ?>/">
    	<fieldset>
    		<input type="text" value="<?php the_search_query(); ?>" name="s" class="findfield" />
    		<input type="submit" value="<?php _e('Search','cmfy'); ?>" class="findsubmit" />
    	</fieldset>
    </form>
    <h2><?php _e('Yearly Archive','cmfy'); ?></h2>
    <ul><?php wp_get_archives('type=yearly&show_post_count=1'); ?></ul>
    <h2><?php _e('Monthly Archive','cmfy'); ?></h2>
    <ul><?php wp_get_archives('type=monthly&show_post_count=1'); ?></ul>
    <h2><?php _e('Category Archive','cmfy'); ?></h2>
    <ul><?php wp_list_cats('sort_column=name&optioncount=1'); ?></ul>
    <h2><?php _e('Posts Archive','cmfy'); ?></h2>
    <ul><?php wp_get_archives('type=postbypost') ?></ul>
        </div>
    </div>
    </div>
    </div>
    </div><!-- bigdiv -->
    
    
    <div class="page-bottom"></div>
    

    <?php endif; ?>

    <div class="clear"></div>
    </div>

    <?php get_sidebar('videos'); ?>

    <?php get_footer(); ?>[/PHP]

    Quella è la mia pagina categorie, e vorrei prenderne un pezzo e metterlo nella mia home page.

    Ho provato a farlo e funziona perfettamente soltanto che, mi mette gli articoli in ordine di caricamento..

    Sapresti come posso fare a far sì che, vengano visualizzati gli articoli di una determinata categoria?


  • Moderatore

    Per caricare degli articoli di una determinata categoria nella tua home page, si possono usare vari metodi. Visto che il codice che hai postato utilizza query_posts, vediamo di farlo con quella funzione li.

    In pratica basta sostituire "get_query_var('cat')" con l'id della categoria che intendi richiamare, in questa parte di codice:

    [PHP]$cat = get_query_var('cat');[/PHP]

    Non ho avuto il tempo di testare questa soluzione, ma dovrebbe funzionare.
    Fammi sapere.


  • User

    Funziona perfettamente, soltanto che ho riscontrato un piccolo problema..

    La variabile $cat, la definisco inserendo il numero della categoria come da te suggerito, e funziona soltanto che, i miei widget vengono sballati..

    Nel senso: Nella home page ho un certo tipo di widget mentre nelle pagina categorie ne ho altri..

    Facendo:

    [PHP]$cat = 9292;[/PHP]

    nella home page mi vengono visualizzati gli widget che ho nelle pagine categorie.. Per te cosa potrebbe essere?

    Il codice che ho aggiunto alla home page è questo:

    [PHP]<!-- INIZIO Test -->

    <div id="bigcolumn">

    <?php
    $cat = 9292;
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts('showposts=15&paged=' . $paged .'&cat='.$cat);
    $wp_query->is_archive = false; $wp_query->is_home = true;
    ?>
    <?php if (have_posts()) : ?>
    
    <div class="page-all">
    <div class="page-top">
    <div class="containerI">
    
    <div class="sitenav">
    <a href="<?php bloginfo('url'); ?>"><?php _e('Home','cmfy'); ?></a>&nbsp;&nbsp;&raquo;&nbsp;&nbsp;<?php single_cat_title(); ?>
    </div>
    
    <div class="bigdiv">
    	
    
    <ul class="vidlist">
    <?php while (have_posts()) : the_post(); ?>
    <li id="post-<?php the_ID(); ?>">
    

    <span class="title"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php short_title(25); ?></a></span>
    <div class="videothumb"><?php show_thumb($comfy['img_videos_w'],$comfy['img_videos_h'],$comfy['crop'],$comfy['cropfrom'],$comfy['quality']); ?><div class="playit"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"></a></div></div>
    <div class="clear"></div>
    » Genere: <?php
    // Definire l'elenco degli ID da escludere
    $exclude = Array(28,22218,22291,22289,22292,9292,22296);
    $_LIMIT = 0;
    foreach((get_the_category()) as $category) {

    if (!in_array($category->cat_ID, $exclude) && !$_LIMIT > 0) {
    echo "<a href='/$category->category_nicename'> $category->cat_name </a>";
    $_LIMIT++;
    }

    }
    ?>

    <br />
    <br />

    » <i><?php if(function_exists('the_views')) { the_views(); } ?>
    <?php _e('times','cmfy'); ?></i>

    <?php if(function_exists('the_ratings')) { echo '<span class="videorating">'.__('Rated:','cmfy'); the_ratings(); echo '</span>'; } ?>
    </li>
    <?php endwhile; ?>
    </ul><div class="clear"></div>
    
    <!-- Plugin Navigation -->
    

    <?php if(function_exists('wp_page_numbers')) : wp_page_numbers(); endif; ?>

    <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

        <!-- End -->
    
    </div>
    </div>
    </div>
    </div><!-- bigdiv -->
    <div class="page-bottom"></div>
    
    <?php else : ?>
    
    <!-- Not found? -->
    <div class="page-all">
    <div class="page-top">
    <div class="containerI">
    
    <div class="sitenav">
    <a href="<?php bloginfo('url'); ?>"><?php _e('Home','cmfy'); ?></a>&nbsp;&nbsp;&raquo;&nbsp;&nbsp;<?php _e('404 Error','cmfy'); ?>
    </div>
    
    <div class="bigdiv">
    
    <div class="post">
    <h2><?php _e('Cannot find the page you are looking for.','cmfy'); ?></h2>
    <p><?php _e('Use the search form below to find your article or post or browse our latest articles to read something more interesting.','cmfy'); ?></p>
    <form class="find" method="get" action="<?php bloginfo('url'); ?>/">
    	<fieldset>
    		<input type="text" value="<?php the_search_query(); ?>" name="s" class="findfield" />
    		<input type="submit" value="<?php _e('Search','cmfy'); ?>" class="findsubmit" />
    	</fieldset>
    </form>
    <h2><?php _e('Yearly Archive','cmfy'); ?></h2>
    <ul><?php wp_get_archives('type=yearly&show_post_count=1'); ?></ul>
    <h2><?php _e('Monthly Archive','cmfy'); ?></h2>
    <ul><?php wp_get_archives('type=monthly&show_post_count=1'); ?></ul>
    <h2><?php _e('Category Archive','cmfy'); ?></h2>
    <ul><?php wp_list_cats('sort_column=name&optioncount=1'); ?></ul>
    <h2><?php _e('Posts Archive','cmfy'); ?></h2>
    <ul><?php wp_get_archives('type=postbypost') ?></ul>
        </div>
    </div>
    </div>
    </div>
    </div><!-- bigdiv -->
    
    
    <div class="page-bottom"></div>
    

    <?php endif; ?>

    <div class="clear"></div>
    </div>

    <!-- FINE Test -->[/PHP]


  • Moderatore

    Credo che dipenda dal fatto che la query, dopo averla utilizzata per richiamare una singola categoria, vada resettata.

    Prova ad inserire questo codice dopo aver inserito il richiamo di cui sopra:

    [PHP]// Reset Query
    wp_reset_query();[/PHP]

    Per approfondimenti sull'utilizzo di query_posts ti rimando alla pagina dedicata su wordpress.org (studiare non fa mai male): 😄 http://codex.wordpress.org/Function_Reference/query_posts


  • User

    Complimenti e grazie giapox, funziona alla grande!

    Sono agli inizi con wordpress, php, css... se quella pagina non fosse stata in inglese ci avrei fatto un pensierino, ma comunque resta sempre utile.

    Grazie ancora, mi hai tolto un grosso peso!


  • Moderatore

    Ottimo, son felice di essere riuscito a darti una mano.

    Per il discorso della pagina in inglese, puoi sempre usare Google Translate. 😉


  • User

    Seguendo quella guida, e il readme.txt del mio plugin "Post Views" sono riuscito a ordinare gli articoli in ordine dal più visto..

    Grazie ancora del supporto 🙂


  • User

    Ciao giapox, ho un altro piccolo problemino.. sono riuscito ad ordinare i miei articoli in base alle visualizzazione però ora non riesco in alcun modo ad ordinarli in un altro metodo:

    Su ogni articolo utilizzo i campi personalizzati ed ad ogni articolo assegno una data tramite la funzione che ho creato: data_personale.

    Quindi su ogni articolo definisco data_personale con questo formato: 08/03/2012.

    E' possibile fare in modo che la "query_posts" mi ordini gli articoli in base alla data che definisco io?


  • Moderatore

    Il comando per ordinare gli articoli è il seguente:

    'orderby=date'

    In questo esempio gli articoli vengono ordinati per titolo.
    Sinceramente non so se puoi ordinarli in base alla data definita da te.

    Puoi provare in questo modo, ma non so se funziona:

    query_posts('showposts=15&paged=' . $paged .'&cat='.$cat.'orderby=data_personale');