Plugin Author
Ajay
(@ajay)
Hi,
For the $settings, you should also pass the limit e.g.
'limit' => 10
The postnumber returned in the array will be in the order of the most to least popular so what you’ve done to pass to WP_Query is correct.
Ajay,
thanks for your response!
Set ‘limit’ => 10 — no effect at all…
Is there maybe any other code in the plugin files that sets the limit to 5 as default, overriding this argument?
Thanks,
Robert
Plugin Author
Ajay
(@ajay)
Hi,
I’m wondering if it is because of the WP_Query.
What if you pass an additional parameter for the $args for WP_Query with posts_per_page set to 10?
Genius!
Passing the posts_per_page argument does the trick!
You saved may day! Thanks!
– Set posts_per_page to -1 for displaying all posts without limit,
– Removed ‘limit’ argument passed to get_tptn_pop_posts, since I don’t want any limit in number of posts and setting it to FALSE changed the ordering.
By the way: Including a category filter in the standard shortcode and widget would be another killer feature of Top 10 in my opinion …
Here’s the final code for anyone trying to reproduce thist solution:
function tptn_shortcode_ablagesystem( $atts, $content = null ) {
if ( function_exists( 'get_tptn_pop_posts' ) ) {
$list ='';
$settings = array(
'daily' => TRUE,
'daily_range' => 30,
'strict_limit' => FALSE,
);
$topposts = get_tptn_pop_posts( $settings ); // Array of posts
$topposts = wp_list_pluck( $topposts, 'postnumber' );
$args = array(
'post__in' => $topposts,
'orderby' => 'post__in',
'post_type' => 'post',
'cat' => '4',
'posts_per_page' => '-1',
);
$my_query = new WP_Query( $args );
if ( $my_query->have_posts() ) {
$list = '<ul>';
while ( $my_query->have_posts() ) {
$my_query->the_post();
$list = $list . '<li><a href="' . get_permalink( get_the_ID() ) . '">' . get_the_title() . '</a></li>';
wp_reset_postdata();
}
$list = $list . '</ul>';
} else {
}
wp_reset_query();
return $list;
}
}
add_shortcode( 'tptn_list_ablagesystem', 'tptn_shortcode_ablagesystem' );
Plugin Author
Ajay
(@ajay)
Thank you for confirming. I have been thinking of rewriting the Top 10 loop to potentially make it similar to WP_Query, or even use it like you’ve done above. It still is a few versions away before I get that working fine!
I think there is a problem mit the limit feature.
$settings = array(
'daily' => TRUE,
'daily_range' => 7,
'limit' => 2
);
$topposts = get_tptn_pop_posts($settings); // Array of posts
var_dump($topposts);
Unfortunately there are 10 items. Perhaps the default values don’t get changed.
https://plugins.trac.ww.wp.xz.cn/browser/top-10/tags/2.1.0/top-10.php#L1110
Plugin Author
Ajay
(@ajay)
Hi,
Please include:
$settings = array(
'daily' => TRUE,
'daily_range' => 7,
'limit' => 2,
'strict_limit' => TRUE,
);
Thanks for your fast reply, it’s working 🙂
Plugin Author
Ajay
(@ajay)
You’re welcome. Glad to know it’s working.
seems close to what I need although category post needs to be shown is 3 popular posts
while using the default top10 post. so 2 top10, 1 default and 1 like the op
i tried doing some edits
function tptn_shortcode_songreviews( $atts, $content = null ) {
if ( function_exists( 'get_tptn_pop_posts' ) ) {
$list ='';
$settings = array(
'daily' => TRUE,
'daily_range' => 7,
'limit' => 2,
'strict_limit' => FALSE,
);
$topposts = get_tptn_pop_posts( $settings ); // Array of posts
$topposts = wp_list_pluck( $topposts, 'postnumber' );
$args = array(
'post__in' => $topposts,
'orderby' => 'post__in',
'post_type' => 'post',
'cat' => '5',
'posts_per_page' => '3',
);
$my_query = new WP_Query( $args );
if ( $my_query->have_posts() ) {
$list = '<ul>';
while ( $my_query->have_posts() ) {
$my_query->the_post();
$list = $list . '<li><a href="' . get_permalink( get_the_ID() ) . '">' . get_the_title() . '</a></li>';
wp_reset_postdata();
}
$list = $list . '</ul>';
} else {
echo "something went wrong";
}
wp_reset_query();
return $list;
}
}
add_shortcode( 'tptn_list_songreviews', 'tptn_shortcode_songreviews' );
although shortcode doesnt seem to show the output..
`<?php echo do_shortcode(‘[tptn_list_songreviews]’); ?> ‘
Plugin Author
Ajay
(@ajay)
Hi,
Do you see any output if you disable:
'cat' => '5',
I dont see any its just blank, see screenshot plugin disabled:
http://i62.tinypic.com/33aq8lk.jpg
as you can see trending section is using your given settings, while below is the code provided by op RobertMueller shows nothing..
this(from psd) is what I’m trying to achieve for the 2 top10 sidebars almost done with sidebar 1 just need to add a ordered number and sidebar 2 is well, still stuck
http://i57.tinypic.com/n71bb4.png
I manage to get it working, it seems to be a cache problem deactivating plugin and hard refresh just wasn’t enough, so I tried to used the resets buttons under ‘reset count and other tools’ also turned off cache fix under ‘general’ although i don’t think this should cause any issues since i haven’t activated any cache plugins.
other notes:
-used browsers to test are set to save tab sessions and histories
-developing this in a local server NOT on a hosted server
here’s a fresh reset with plugin reactivated and reset the counts
http://i62.tinypic.com/2vjrb5f.png
quirks: above it default will say No top posts yet, while the reseted the custom one doesn’t display the custom message i added in the
else { echo "something went wrong"; }
it will later once the default top10 gets its first view it will display the message.
——————————-
2 things left I need to know and do now is how to add numbering after the title to the default as mentioned in my last post and another is to add thumbnail to the custom one
Plugin Author
Ajay
(@ajay)
Hi,
Can you clarify what you mean by numbering? For the top list, you could use ol instead of ul
$list = '<ol>';
For the thumbnail, you could use tptn_get_the_post_thumbnail to fetch the thumbnail by passing the post ID
https://github.com/ajaydsouza/top-10/blob/master/top-10.php#L1490
tptn_get_the_post_thumbnail( array(
'postid' => get_the_ID(),
) );