Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Δες μήπως το πρόβλημά σου είναι πως η get_category() που χρησιμοποιείς επιστρέφει OBJECT ενώ η get_categories() επιστρέφει array of OBJECTS (νομίζω μάλιστα πως είναι διαφορετικού τύπου objects, αλλά δεν ευκαιρώ να το τσεκάρω τώρα).

 

Κάνε δοκιμές με print_r() και σκάλισε λιγάκι και το codex (έχει και παραδείγματα). Το να λιστάρεις τα ποστς μιας κατηγορίας είναι εύκολο και θα βρεις μυριάδες παραδείγματα με κώδικα, με το js effect μπορεί να δυσκολευτείς κάπως μέχρι να το εντοπίσεις στο theme σου (λογικά είναι jQuery based).

Δημοσ.

To Codex έχει τη λύση -> https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

$args = array(
	'post_type' => 'portfolio',
	'tax_query' => array(
		array(
			'taxonomy' => 'skills',
			'field' => 'slug',
			'terms' => 'photoshop'
		)
	)
);
$query = new WP_Query( $args );

στο προσαρμοσμένο παράδειγμα πάνω, έχουμε: ένα custom post type που λέγεται portfolio, μια custom taxonomy για το ως άνω cpt που λέγεται skills και τέλος το term (το συγκεκριμένο skill) που θέλουμε ν απεικονίσουμε, εν προκειμένω photoshop.

 

That's it.

  • Like 2
Δημοσ.

To Codex έχει τη λύση -> https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

$args = array(
	'post_type' => 'portfolio',
	'tax_query' => array(
		array(
			'taxonomy' => 'skills',
			'field' => 'slug',
			'terms' => 'photoshop'
		)
	)
);
$query = new WP_Query( $args );

στο προσαρμοσμένο παράδειγμα πάνω, έχουμε: ένα custom post type που λέγεται portfolio, μια custom taxonomy για το ως άνω cpt που λέγεται skills και τέλος το term (το συγκεκριμένο skill) που θέλουμε ν απεικονίσουμε, εν προκειμένω photoshop.

 

That's it.

Αδερφέ είσαι πολύ σωστός(και εσύ και το codex :P ).

 

Παραθέτω τον ολοκληρομένο κώδικα για όποιον ενδιαφέρεται.

 

 

<?php
/*
Template Name: Portfolio
*/
?>



<?php get_header(); ?>


<!--Blog BANNER-->

<?php if ( have_posts() ) : ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?> 


	<div id="banner">
		<p><?php the_title(); ?></p>
		<span>
	   	<p></p>
	   </span>
	</div>


 <?php endwhile; ?>
<?php else : ?>
<?php endif; ?>





 <!-- PORTFOLIO WRAPPER-->

 <div id="portfolioWrapp" class="row">
 	<div id="portfolioNav" class="large-12 columns">
    	<ul id="portfolio-filter" class="clear-fix">
        	<li><a href="#" data-filter="*">All</a></li>
	
			<?php
	


			 $catArgs = array(
						'taxonomy'=>'project-type'
						// post_type isn't a valid argument, no matter how you use it.
						 );
			 $categories =  get_categories('taxonomy=project-type'); ?>
			
			 <?php 
			   foreach ($categories as $category) : ?>

             <li><a href="#" data-filter=".<?php echo $category->slug; ?>"><?php echo $category->name ?></a></li> 

             <?php 
             endforeach; 
             ?>
        </ul>
    </div>
    
    <div id="portfolioContainer" class="large-12 columns">
        <ul id="portfolio-list" class="clear-fix">


			  	<?php 
			  	$args = array( 'post_type' => 'portfolio', 
			  				   'tax_query' => array(
								array(
									'taxonomy' => 'project-type',
									'field' => 'lang',
									'terms' => '7'
									
								)
							)
						 ); 
			  	$loop = new WP_Query( $args );
			  	while ( $loop->have_posts() ) : $loop->the_post(); ?>
			      
			      <?php 
			      $terms = get_the_terms($post->id,"project-type");
			      $project_cats = NULL;
			      
			      if ( !empty($terms) ){
			        foreach ( $terms as $term ) {
			          $project_cats .= strtolower($term->name) . ' ';


			        }
			      }


			    

			      ?>

			      <li class="element <?php echo $term->slug ?>">
			            	<div class="imageSlide">
			                	<ul class="imagesContainer clear-fix sliderCont<?php the_id(); ?>">
			                    	<?php 

			                    	if(has_post_thumbnail()) { the_post_thumbnail('portfolio'); }

			                    	if (class_exists('MultiPostThumbnails')) {
			                    	    if (MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'feature-image-2', NULL,  'portfolio')) {
			                    	        MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'feature-image-2', NULL,  'portfolio'); 
			                    	    }
			                    	    if (MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'feature-image-3', NULL,  'portfolio')) {
			                    	        MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'feature-image-3', NULL,  'portfolio'); 
			                    	    }
			                    	    if (MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'feature-image-3', NULL,  'portfolio')) {
			                    	        MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'feature-image-3', NULL,  'portfolio'); 
			                    	    }
			                    	    if (MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'feature-image-5', NULL,  'portfolio')) {
			                    	        MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'feature-image-5', NULL,  'portfolio'); 
			                    	    }

			                    	    if (MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'feature-image-6', NULL,  'portfolio')) {
			                    	        MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'feature-image-6', NULL,  'portfolio'); 
			                    	    }
			                    	}

			                    	 ?>
			                    </ul>
			                    <div class="slider-nav<?php the_id(); ?>  slider-nav">
			                        <button class="prevBtn" data-dir="prev">Previous</button>
			                        <button class="nextBtn" data-dir="next">Next</button>
			                    </div>
			                </div>
			                
			                <div class="large-10 columns portContent">
			                	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span class="titleDivide">|</span> <span class="portCategorie"><?php echo $project_cats; ?></span></h2>
			                    <p><?php echo wp_trim_words( get_the_content(), 10 ); ?></p>
			                </div> 
			                
			                <div class="large-2 columns portLinks">
			                	<a href="<?php $image_id = get_post_thumbnail_id();
                                           $image_url = wp_get_attachment_image_src($image_id,'large', true);
                                           echo $image_url[0];  ?>" rel="prettyPhoto">Loupe</a>
			                    <a href="<?php the_permalink(); ?>">Link</a>
			                </div>


			            </li>


			  	<?php endwhile; ?>




            
        </ul>
    </div>

 </div>







<?php get_footer(); ?>

 

 

 

Για να βοηθήσω να πω ότι στο 'taxonomy' πρέπει να βάλουμε την γενική κατηγορία που ανήκουν όλα τα portfolio posts μας,

στο 'field' πρέπει να βάλουμε το slug της κατηγορίας που θέλουμε να προβληθεί 

και τέλος στο 'terms' πρέπει να βάλουμε το id της κατηγορίας που θέλουμε να προβληθεί.

 

 

Μια τελευταία ερώτηση ελπίζω απλή αυτή την φορά.

Πως μπορώ να δημιουργήσω ξεχωριστές σελίδες και να προβάλετε μόνο μια κατηγορία κάθε φορά?

Θα πρέπει να δημιουργήσω όσα templates όσες οι σελίδες που θέλω να προβάλω και σε κάθε μια να επιλέγω το αντίστοιχο template?

Αν ναι, πως φτιάχνω ένα καινούργιο template? :P

 

Ευχαριστώ και πάλι για κάθε απάντηση.

Δημοσ.

...

 

Μια τελευταία ερώτηση ελπίζω απλή αυτή την φορά.

Πως μπορώ να δημιουργήσω ξεχωριστές σελίδες και να προβάλετε μόνο μια κατηγορία κάθε φορά?

Θα πρέπει να δημιουργήσω όσα templates όσες οι σελίδες που θέλω να προβάλω και σε κάθε μια να επιλέγω το αντίστοιχο template?

Αν ναι, πως φτιάχνω ένα καινούργιο template? :P

 

Ευχαριστώ και πάλι για κάθε απάντηση.

 

Τι εννοείς; Αυτό δεν έκανες μόλις τώρα; (προβάλεις μονάχα τις σελίδες μιας συγκεκριμένης κατηγορίας)

Δημοσ. (επεξεργασμένο)

Ξαναδιαβάζοντας την τελευταία σου ερώτηση με ησυχία (γιατί προηγουμένως έφτιαχνα κάτι js event listeners στο site που δουλεύω και μου ήρθε ειδοποίηση πως γράφτηκε νέα απάντηση σε ένα άλλο νήμα, οπότε πετάχτηκα να δω και με την ευκαιρία πέρασα κι από εδώ στα γρήγορα ... τώρα τέλειωσα με τους listeners οπότε κάνω επίσημο διάλειμμα :P) νομίζω πως κατάλαβα τι εννοείς.

 

Θες να βγάλεις στο front-end links για κάθε κατηγορία που έχεις φτιάξει στο back-end, και πατώντας τα να σου εμφανίζει το καθένα τους τις σελίδες που ανήκουν στην διαλεγμένη κατηγορία, σωστά;

 

Αν ναι, υπάρχουν καλά και κακά νέα :P

 

Τα κακά νέα είναι πως από default το Wordpress δεν υποστηρίζει κατηγορίες (ούτε ετικέτες) για pages αλλά μόνο για posts. Τα καλά νέα είναι πως μπορείς είτε να φτιάξεις δικά σου custom taxonomies για pages ή να χρησιμοποιήσεις τα υπάρχοντα taxonomies που υπάρχουν για posts (δηλαδή τα taxonomies: category, tag και link-category).

 

Το παραπάνω link από το codex σου εξηγεί τα γενικά περί taxonomies. Αυτό εδώ εξηγεί βήμα-βήμα πως να φτιάξεις δικά σου taxonomies, χρησιμοποιώντας το στάνταρ TwentyTen theme. Μιλάει μόνο για posts, αλλά είναι good read για να καταλάβεις τα custom taxonomies. Με παρόμοια λογική μπορείς να φτιάξεις custom taxonomies για pages ή ακόμα και για custom post types.

 

Το theme που χρησιμοποιείς έχει φτιάξει ένα custom post type ('portfolio') καθώς και ένα custom taxonomy ('project-type') για αυτό το custom post type.

 

Επιστρέφοντας στην ερώτησή σου σχετικά με τις κατηγορίες σελίδων, όπως σου έγραψα και πριν, από default το στάνταρ post type 'page' ΔΕΝ έχει καθόλου taxonomies (εκτός αν του έχει προσθέσει το theme σου).

 

Ο πιο εύκολος τρόπος να προσθέσεις τα στάνταρ taxonomies 'category' και 'tag' του standard post type 'post' στο στάνταρ post type 'page' είναι μέσω κάποιου plugin, όπως π.χ. αυτό εδώ (που δεν έχει καθόλου ρυθμίσεις στο back-end, αλλά σου εμφανίζει category και tag meta boxes στις σελίδες σου όταν το ενεργοποιήσεις)  ή αυτό εδώ (που έχει περισσότερα features και back-end settings).

 

Με κάποιο από αυτά τα plugins (ή όποιο παρόμοιο) μπορείς πλέον να ορίσεις τιμές στο 'category' meta box των σελίδων σου (να τις χωρίσεις δηλαδή σε κατηγορίες) και κατόπιν να βγάλεις links προς αυτές τις κατηγορίες, όπως κάνεις και με τα posts (είτε δηλαδή απευθείας σε μενού, είτε με custom κώδικα, κλπ).

 

Το 2ο από τα plugins που σου έδωσα, έχει και shortcodes που μπορείς να τα χρησιμοποιήσεις απευθείας οπουδήποτε θέλεις, χωρίς να γράψεις καθόλου κώδικα.

 

Σε ότι αφορά τα templates, συνήθως οι κατηγορίες εμφανίζουν τα περιεχόμενά τους μέσω ενός template που ονομάζεται category.php (αλλά στο theme σου μπορεί να ονομάζεται αλλιώς). Αν δηλαδή δεν σου αρέσει ο τρόπος με τον οποίο εμφανίζονται οι σελίδες σου ως περιεχόμενα των κατηγοριών τους, μπορείς να πειράξεις το configure.php category.php template (για αυτές τις δουλειές ΔΕΝ πειράζουμε ποτέ τα original αρχεία, αλλά φτιάχνουμε ένα child-theme). Μπορείς επίσης να φτιάξεις custom category templates για κάποια ή κάποιες από τις κατηγορίες σου.

 

EDIT:

 

Τυπογραφικά (με κυριότερο το category.php που εκ παραδρομής το είχα γράψει configure.php)

Επεξ/σία από migf1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...