Adatbázis, népszerű bejegyzések (function.php)

Hali!





Van egy super kis kódom a functions fájlba, ami megjeleníti a népszerű bejegyzéseket.





Akadt 2 problémám vele:









    [*]Nem jelenik meg olyan archive oldalakon, amibe ékezet van.
    [*]Szeretném megejeleníteni a the_excerpt-et, de csak a the_content működik.
    [/list]



    Code:

    <?php

    // My popular post

    function my_popular_posts($num, $my_id=0, $begin='
      ', $end='
    ', $pre='
  1. ', $suf='
  2. '){

    global $wpdb;

    if($my_id==0):

    if(is_category()):

    $my_title = strtolower(single_cat_title('', false)); $my_id = get_cat_ID($my_title);

    elseif(is_tag()):

    $my_title = $my_id = intval(get_query_var('tag_id'));

    elseif(is_single()):

    $my_title = get_the_category(); $my_id = $my_title[0]->cat_ID;

    endif;

    endif;

    if(!is_category() && !is_tag() && !is_single() && $my_id==0):

    $querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content, $wpdb->posts.comment_count FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.comment_count DESC LIMIT $num";

    else:

    $querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content, $wpdb->posts.comment_count FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE term_id=$my_id AND $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY comment_count desc LIMIT $num";

    endif;



    $myposts = $wpdb->get_results($querystr, OBJECT);

    echo $begin;

    foreach($myposts as $post) {

    $title = $post->post_title;

    $thumb = get_post_meta($post->ID,'_thumbnail_id',false);

    $thumb = wp_get_attachment_image_src($thumb[0], 'topbox', true);

    $thumb = $thumb[0];

    echo $pre;

    ?>

    <?php echo '' . $title . ''?>

    <?php echo $post->post_title ?>

    <?php echo $post->post_excerpt ?><?php

    echo $suf;

    } echo '';

    echo $end;



    }

    ?>








    Valaki tudna segíteni? Nem nagyon értek a php-hez.





    Nos addig jutottam, hogy a probléma megoldása nem az ékezetekbe keresendő.


    Létrehoztam egy tag.php és category.php oldalt, és így már minden tag oldalon megjelenik.


    A kategóriákra kattintva viszont még nem. Gondolom a probléma ebbe a sorba keresendő:





    Code:

    <?php

    if(is_category()):

    $my_title = strtolower(single_cat_title('', false)); $my_id = get_cat_ID($my_title);

    ?>





    Viszont nem tudom a megoldást. Valaki tudna segíteni?





    Na, most így minden oldalon működik.


    Code:

    <?php

    // My popular post

    function my_popular_posts($num, $my_id=0, $begin='
      ', $end='
    ', $pre='
  3. ', $suf='
  4. '){

    global $wpdb;

    if($my_id==0):

    if(is_category()):

    $my_title = get_the_category(); $my_id = $my_title[0]->cat_ID;

    elseif(is_tag()):

    $my_title = $my_id = intval(get_query_var('tag_id'));

    elseif(is_single()):

    $my_title = get_the_category(); $my_id = $my_title[0]->cat_ID;

    endif;

    endif;

    if(!is_category() && !is_tag() && !is_single() && $my_id==0):

    $querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content, $wpdb->posts.comment_count FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.comment_count DESC LIMIT $num";

    else:

    $querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content, $wpdb->posts.comment_count FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE term_id=$my_id AND $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY comment_count desc LIMIT $num";

    endif;



    $myposts = $wpdb->get_results($querystr, OBJECT);

    echo $begin;

    foreach($myposts as $post) {

    $title = $post->post_title;

    $thumb = get_post_meta($post->ID,'_thumbnail_id',false);

    $thumb = wp_get_attachment_image_src($thumb[0], 'topbox', true);

    $thumb = $thumb[0];

    echo $pre;

    ?>

    <?php echo '' . $title . ''?>

    <?php echo $post->post_title ?>

    <?php echo $post->post_excerpt ?><?php

    echo $suf;

    } echo '';

    echo $end;



    }

    ?>





    Ha valaki ért hozzá szivesen veszem a javítási ötleteket.


    Tehát a kód megjeleníti a népszerű bejegyzéseket kiemelt képekkel a kategóriákba, címkékbe és az oldalakon.

Na ez egy jó nagy butaság volt!





Egy egyszerű query_posts-al sikerült megoldható volt.





Mennyire jó tutorialokat böngészni!





A téma zárható, ha gondoljátok.