Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP / WordPress] Post van categorie op pagina

Pagina: 1
Acties:

  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
Goeiendag,

Ik ben een thema van wordpress aan het customizen. De themer is op vakantie en levert sowieso geen support op customizations. Daarom mijn vraag hier. Ik krijg het probleem zelf niet opgelost. Waarschijnlijk is het niet zo moeilijk, maar aangezien ik geen coder ben geraak ik er niet in 1-2-3 aan uit -O- .

In het thema kan je o.a. 'Audio posts' aanmaken. Deze posts kan je allemaal op een pagina tonen met behulp van een pagina template. Dit template noemt: 'Audio Style 1 (4 COLUMNS)' en ziet er zo uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
/*
Template Name: Audio Style 1 (4 COLUMNS)
*/
?>

<?php get_header(); ?>


<div id="content">

   <div class="title-head"><h1><?php
$prefix = false;
if (function_exists('is_tag') && is_tag()) {
    $prefix = true;
} elseif (is_archive()) {
    wp_title(' ');
} elseif (is_page()) {
    the_title();
}
?></h1></div>

<?php

$term      = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy'));
$audios_nr = of_get_option('nr_audio');
$query     = array(
    'post_type' => 'audio',
    'posts_per_page' => $audios_nr,
    'paged' => $paged,
    'taxonomy' => 'audios',

);
$wp_query  = new WP_Query($query);
    
echo '
   <div class="adpage clearfix">
      <div class="wz-media">';
while ($wp_query->have_posts()):
    $wp_query->the_post();
    global $post;
    $title       = get_the_title();
    $results     = $wp_query->post_count;
    $items_count = 0;
    $items_count++;
    $image_id    = get_post_thumbnail_id();
    $cover       = wp_get_attachment_image_src($image_id, 'audio-style1');
    $cover_large = wp_get_attachment_image_src($image_id, 'photo-large');
    $custom      = get_post_custom($post->ID);
    $genre       = $custom["audio_genre"][0];
    $no_cover    = get_template_directory_uri();
    $quality     = $custom["audio_quality"][0];
    $duration    = $custom["audio_duration"][0];
    $date        = get_post_meta($post->ID, 'release_date', true);
    $cat         = of_get_option('shortcat_audio', '1');
            $time           = strtotime($date);
        $pretty_date_yy = date('Y', $time);
        $pretty_date_M  = date('F', $time);
        $pretty_date_d  = date('d', $time);
    echo '                                       
         <div class="adpage1-col2 wz-last">
            <a href="' . get_permalink() . '">
                    <div class="adshr-info2">   
                        <div class="adshr-title">' . $title . '</div>
                </a>
                    </div>
            <div class="adpage1-cover">
               <div class="wz-wrap wz-hover">';
    if ($image_id) {
        echo '
                  <img src="' . $cover[0] . '" alt="' . get_the_title() . '" />';
    } else {
        echo '
                  <img src="' . $no_cover . '/images/no-cover/audio-1arc.png" alt="no image" />';
    } 
    echo '  
                  <div class="he-view">
                     <div class="bg a0" data-animate="fadeIn">
                        <a href="' . get_permalink() . '" class="adpage1-link a2" data-animate="zoomIn"></a>
                     </div>
                  </div>            
               </div>          
            </div><!-- end .adpage1-cover -->
            <a href="' . get_permalink() . '">
               <div class="adpage-info">    
                <div class="adshr-des2">';  
                    $items_src .= '
                </div>  
                  </div>  
               </a>
            </div>
                  <div class="adpage-des">';   
        if ($date != null) {
            echo '<strong>Date:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' . $pretty_date_d . ' ' . $pretty_date_M . '  ' . $pretty_date_yy . '';
        } 
        if ($duration != null) {
            echo '<br><strong>Duration:</strong>&nbsp; ' . $duration . '';
        }
        if ($quality != null) {
            echo '<br><strong>Quality:</strong> &nbsp;&nbsp;&nbsp;&nbsp;' . $cat . '';
        }
        if ($genre != null) {
            echo '<br><strong>Genre:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>  ' . $genre . '';
        }
        echo '<br><strong>OUTPUT:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>  ' . $paged . '';
    echo '
    
            <hr>
        <div class="btndownload">
        LISTEN / DOWNLOAD
        </div>
    
                  </div>
               </div><!-- end .adpage-info -->
            </a>  
         </div><!-- end .adpage1-col wz-last -->';
endwhile;
echo '
      </div><!-- end .wz-media -->
   </div><!-- end .adpage clearfix -->';

if (function_exists("pag_full_wz")) {
    pag_full_wz();
}
?>

</div><!-- end #content -->

<?php get_footer(); ?>



Werkt allemaal perfect. Echter worden alle 'Audio posts' weergegeven op die pagina. (8 per pagina. Lijnen 122 & 123 zorgen er voor dat oudere posts op een andere pagina (bv. pagina 2, 3, 4 ...) komen.) Dat is ook de bedoeling.

Nu wil ik hebben dat alleen Audio posts vanuit een bepaalde categorie getoond worden. Op het WWW vond ik dit: http://wordpress.org/supp...-a-page-solved?replies=37. Dit krijg ik echter niet toegepast op mijn pagina (Audio Style 1 (4 COLUMNS)).

Iemand die me uit de nood kan helpen? Ben er al 2 dagen achter aan het zoeken |:( .

Alvast bedankt!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Ik ken WP verder niet maar de documentatie zegt dat je je WP_query een cat-parameter mee kan geven. Ergens tussen regel 27 en 33 dus.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
NMe schreef op vrijdag 16 augustus 2013 @ 14:25:
Ik ken WP verder niet maar de documentatie zegt dat je je WP_query een cat-parameter mee kan geven. Ergens tussen regel 27 en 33 dus.
Thnx voor de snelle reply. Ik veronderstel dat ik dit er onder moet plaatsen:
code:
1
'cat' => '3',


Dan worden er geen posts getoond...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

En als je 'cat' => 3 doet? Dus zonder die quotes? Geen idee of WP daar anaal over doet.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
NMe schreef op vrijdag 16 augustus 2013 @ 14:33:
En als je 'cat' => 3 doet? Dus zonder die quotes? Geen idee of WP daar anaal over doet.
Geen verandering. Ik vind het echt vaag.

Het thema maakt ook gebruik van shortcodes. Als ik een pagina aanmaak in WP en typ dit:
code:
1
[audio cat=naamvandecategorie]

dan worden alleen de posts van de categorie 'naamvandecategorie' weergegeven. Deze code kan ik echter niet gebruiken op mijn pagina omdat er dan zowat honderden posts op die pagina zouden komen. De code die er achter zit ziet er zo uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
add_shortcode("audio", "audio_shortcode");
function audio_shortcode($atts, $content) {
    extract(shortcode_atts(array(
        "items" => 3,
        "cat" => null,
        "id" => null,
        "nav" => false,
        "order" => "desc",
        "orderby" => "ID",
        "audios" => null
    ), $atts));
    $order       = strtoupper($order);
    $items_count = 0;
    $items_src   = null;
    if ($id == null) {
        $query = array(
            'post_type' => 'audio',
            'orderby' => $orderby,
            'order' => $order,
            'posts_per_page' => $items
        );
        if (of_get_option('shortcat_audio', '1') == '1') {
            $query = array(
                'posts_per_page' => $items,
                'orderby' => $orderby,
                'order' => $order,
                'post_type' => 'audio',
                'tax_query' => array(
                    array(
                        'taxonomy' => 'audios',
                        'field' => 'slug',
                        'terms' => array(
                            $cat
                        )
                    )
                )
            );
        }
        if ($audios != null) {
            $query['tax_query'] = array(
                array(
                    'taxonomy' => 'audios',
                    'field' => 'slug'
                )
            );
        }
        $wp_query_audio = new WP_Query($query);
    }
    $items_src .= ' 
   <div class="home-shr clearfix">
      <div class="adshr-col">
         <div class="home-width">';
    while ($wp_query_audio->have_posts()):
        $wp_query_audio->the_post();
        global $post;
        $fix         = the_excerpt_max(0);
        $custom      = get_post_custom($post->ID);
        $title       = get_the_title();
        $image_id    = get_post_thumbnail_id();
        $cover       = wp_get_attachment_image_src($image_id, 'audio-shortcode');
        $cover_large = wp_get_attachment_image_src($image_id, 'photo-large');
        $genre       = $custom["audio_genre"][0];
        $quality       = $custom["audio_quality"][0];
        $duration       = $custom["audio_duration"][0];
        $date        = get_post_meta($post->ID, 'release_date', true);
        $time           = strtotime($date);
        $pretty_date_yy = date('Y', $time);
        $pretty_date_M  = date('F', $time);
        $pretty_date_d  = date('d', $time);
        $no_cover    = get_template_directory_uri();
        $items_src .= '
            <div class="adshr-fix wz-last">
            <a href="' . get_permalink() . '">
                    <div class="adshr-info2">   
                        <div class="adshr-title">' . $title . '</div>
                </a>
                    </div>
               <div class="adshr-cover">
                  <div class="wz-wrap wz-hover">';
        if ($image_id) {
            $items_src .= '
                     <img src="' . $cover[0] . '" alt="' . get_the_title() . '" />';
        } else {
            $items_src .= '
                     <img src="' . $no_cover . '/images/no-cover/audio-shr.png" alt="no image" />';
        }
        $items_src .= ' 
                     <div class="he-view">
                        <div class="bg a0" data-animate="fadeIn">
                           <a href="' . get_permalink() . '" class="adshr-link a2" data-animate="zoomIn"></a>
                        </div>
                     </div>         
                  </div>
               </div><!-- end .adshr-cover -->  
               <a href="' . get_permalink() . '">
                  <div class="adshr-info">  
                     <div class="adshr-des">';  
        if ($date != null) {
            $items_src .= '<strong>Date:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' . $pretty_date_d . ' ' . $pretty_date_M . '  ' . $pretty_date_yy . '';
        } 
        if ($duration != null) {
            $items_src .= '<br><strong>Duration:</strong>&nbsp; ' . $duration . '';
        }
        if ($quality != null) {
            $items_src .= '<br><strong>Quality:</strong> &nbsp;&nbsp;&nbsp;&nbsp;' . $quality . '';
        }
        if ($genre != null) {
            $items_src .= '<br><strong>Genre:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>  ' . $genre . '';
        }
        $items_src .= '
                     </div>
        <hr>
        <div class="btndownload">
        LISTEN / DOWNLOAD
        </div>
                  </div>
                  
               </a>
            </div><!-- end .adshr-fix wz-last -->';
    endwhile;
    wp_reset_query();
    $items_src .= ' 
         </div><!-- end .home-width -->
      </div><!-- end .adshr-col -->
   </div><!-- end .home-shr fixed -->';
    return $items_src;
}
?>


Misschien ben je hier iets mee?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Staan er daadwerkelijk items met categorie-ID 3 in je database? Zie je die ook wél gewoon staan als je de query zonder die cat runt?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
NMe schreef op vrijdag 16 augustus 2013 @ 14:45:
Staan er daadwerkelijk items met categorie-ID 3 in je database? Zie je die ook wél gewoon staan als je de query zonder die cat runt?
Ja dan worden alle posts getoond.

Ik heb ook al dit geprobeerd:
code:
1
   'category_name' => 'naamvandecategorie',


code:
1
    'category_name' => naamvandecategorie,


Zonder succes...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

CedricD schreef op vrijdag 16 augustus 2013 @ 14:56:
[...]

Ja dan worden alle posts getoond.
Ja, dat snap ik. Maar zitten daar ook daadwerkelijk posts in met een categorie-ID 3? Bestaat dat ID zeker weten?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
NMe schreef op vrijdag 16 augustus 2013 @ 14:59:
[...]

Ja, dat snap ik. Maar zitten daar ook daadwerkelijk posts in met een categorie-ID 3? Bestaat dat ID zeker weten?
Dit is de structuur van de WP database.

De categorieën zitten in de tabel 'wp_terms'. In de kolom 'term_id' staan de categorieën van de posts.

Afbeeldingslocatie: http://imgup.nl/images/2013/08/16/wpdata.png

Elke post heb ik in een categorie gestoken.

  • Nedra
  • Registratie: Juli 2006
  • Laatst online: 17-10-2023
wat ik vaag vind, is dat in de pagina template 'taxonomy' => 'audios' word aangeroepen. In de PHP van de shortcode wordt 'post_type' => 'audio', aangeroepen. Dus wat is audio nou in dit geval? een custom post type, een taxonomy/category of een post format?

  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
Nedra schreef op vrijdag 16 augustus 2013 @ 18:29:
wat ik vaag vind, is dat in de pagina template 'taxonomy' => 'audios' word aangeroepen. In de PHP van de shortcode wordt 'post_type' => 'audio', aangeroepen. Dus wat is audio nou in dit geval? een custom post type, een taxonomy/category of een post format?
Als ik naar de pagina ga om de categorieën van het custom post type 'Audio' te editen is dit de URL:
code:
1
http://site.com/wordpress/wp-admin/edit-tags.php?taxonomy=audios&post_type=audio


Afbeeldingslocatie: http://imgup.nl/images/2013/08/16/audio.png


Edit:

PHP:
1
2
3
4
5
$test   = array(
        'cat' => '8',
        );
      
query_posts( $test );


Als ik dit boven mijn 'while' zet dan zie ik alle posts uit categorie 8. Dit zijn gewone posts en geen custom (audio) posts. Als ik de categorie wijzig naar 3 dan zie ik niets staan. Toch zitten er daar audio posts in. Die categorie (3 dus) maakt wel deel uit van een custom post categorie.

[ Voor 23% gewijzigd door CedricD op 16-08-2013 18:55 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

CedricD schreef op vrijdag 16 augustus 2013 @ 15:06:
[...]

De categorieën zitten in de tabel 'wp_terms'. In de kolom 'term_id' staan de categorieën van de posts.
Nee, dat zijn geen categoriën. Dezelfde documentatiepagina die ik link geeft aan dat dat "taxonomy terms" zijn die je niet met "cat" maar met "field" kan filteren.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Nedra
  • Registratie: Juli 2006
  • Laatst online: 17-10-2023
Ah dat maakt dingen een stuk duidelijker. De custom post type is dus 'audio' en wat wordt weergegeven als 'category' onder Audio in je WP admin is eigenlijk de custom taxonomy audios. Ik neem aan dat je ook niet dezelfde categorieen ziet staan als je 'category' onder je normale berichten aanklikt?

Met 'cat' => '8' query je de standaard categorieen. Een query van een custom post-type en bijbehorende taxonomy term zou zoiets moeten zijn: (waar 'term naam' de slug is van de categorie die je onder 'audio' > 'category' hebt aangemaakt.)
code:
1
2
3
4
5
6
7
8
9
<?php 
                //start query   
                $query = new WP_Query( 
                    array(
                        'post_type' =>'audio',
                        'audios'=> 'term-naam',
                        'posts_per_page' => -1
                     )
                );

  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
Hé bedankt! Dat zou het inderdaad wel eens kunnen zijn.

Ik ga het morgen(voor)middag eens proberen. Ik laat jullie nog iets weten.

Heel erg bedankt Nedra & NMe.

  • CedricD
  • Registratie: Augustus 2009
  • Laatst online: 10-11 16:07
Afbeeldingslocatie: http://cdn.memegenerator.net/instances/400x/26311267.jpg

Ontzettend bedankt! _/-\o_
Pagina: 1