php - $wpdb returns duplicate posts -
i have created shortcode shows posts created after user last logged in. shortcode working fine, not sure why getting 7 duplicate posts. test created post named "sample article", , when echo out title of post, result.
sample article sample article sample article sample article sample article sample article sample article sample article
shortcode
function latest_posts_after_last_login( $atts ) { global $wpdb, $current_user; $atts = shortcode_atts( array( 'post_type' => ''), $atts, 'latest_posts_after_last_login' ); $post_type = $atts['post_type']; $last_login = get_user_meta( $current_user->id, '_last_login_for_posts', true ); $querystr = " select $wpdb->posts.* $wpdb->posts, $wpdb->postmeta $wpdb->posts.id = $wpdb->postmeta.post_id , $wpdb->posts.post_status = 'publish' , $wpdb->posts.post_type = '%s' , $wpdb->posts.post_date > '%s' order $wpdb->posts.post_date desc "; $prepare = $wpdb->prepare($querystr, array($post_type , $last_login)); $pageposts = $wpdb->get_results($prepare, object); foreach ($pageposts $posts) { echo $posts->post_title; } } add_shortcode( 'latest_posts_after_last_login', 'latest_posts_after_last_login' );
thanks in advance ...
nevermind, solved on own. while reading on wordpress codex $wpdb, saw if use object_k
remove duplicates , solved problem.
if helps anyone, here working code:
function latest_posts_after_last_login( $atts ) { global $wpdb, $current_user; $atts = shortcode_atts( array( 'post_type' => ''), $atts, 'latest_posts_after_last_login' ); $post_type = $atts['post_type']; $last_login = get_user_meta( $current_user->id, '_last_login_for_posts', true ); $querystr = " select $wpdb->posts.* $wpdb->posts, $wpdb->postmeta $wpdb->posts.id = $wpdb->postmeta.post_id , $wpdb->posts.post_status = 'publish' , $wpdb->posts.post_type = '%s' , $wpdb->posts.post_date > '%s' order $wpdb->posts.post_date desc "; $prepare = $wpdb->prepare($querystr, array($post_type , $last_login)); $pageposts = $wpdb->get_results($prepare, object_k); foreach ($pageposts $post) { echo $post->post_title; } } add_shortcode( 'latest_posts_after_last_login', 'latest_posts_after_last_login' );
Comments
Post a Comment