Forums

[resolved] New Query Post (10 posts)

  1. werlisa
    Member
    Posted 2 years ago #

    Hello everyone,

    According MichaelH instructions should create a new Query Post to solve the problem of sticky posts at the top of my index, I want these sticky posts do not appear anchored to the top of my index and disappear in order of publication but are not as do so.

    This is the Query existing post in my topic.

    <?php
    $i = 1;
    if(!empty($_GET['sort']))
    {
    $orderby=trim($_GET['sort']);
    $order=trim($_GET['order']);
    $key=trim($_GET['key']);
    // create the sort by injection
    $posts = query_posts($query_string . '&orderby='.$orderby.'&meta_key='.$key.'&order='.$order.'');
    }
    if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php if ($i % 2 == 0) { $alt = " class=\"alt\""; } else { $alt = " class=\"no\""; } echo "<div" . $alt;
    if (is_sticky()) { echo " id='sticky' "; } echo ">";
    ?>

    And this is the example again proposed by MIchaelH Post Query.

    <?php
    $args=array(
      'meta_key'=>$key,
      'orderby'=> $orderby,
      'order' => $ordr,
      'post_type' => 'post',
      'post_status' => 'publish',
      'posts_per_page' => -1,
      'caller_get_posts'=> 1
    );
    $my_query = null;
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
      while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
        <?php
      endwhile;
    }
    wp_reset_query();  // Restore global post data stomped by the_post().
    ?>

    Someone should know how to do this job?

    Regards

  2. Shane G.
    Member
    Posted 2 years ago #

    Hi,

    Refer this article:

    http://codex.wordpress.org/Function_Reference/query_posts

    Also check with this plugin:

    http://wordpress.org/extend/plugins/query-posts/

    Thanks,

    Shane G.

  3. werlisa
    Member
    Posted 2 years ago #

    Thanks for the reply.
    I tried the query post plugin and it works wonderfully but it is a widget and not affect the overall outcome of the site, continuing the sticky posts anchored to the top of the site.

    As for the wordpress codex I've consulted to find the solution "caller_get_posts=1" but this seems not to work on my site.

    <?php
    $i = 1;
    if(!empty($_GET['sort']))
    {
    $orderby=trim($_GET['sort']);
    $order=trim($_GET['order']);
    $key=trim($_GET['key']);
    // create the sort by injection
    $posts = query_posts($query_string . '&orderby='.$orderby.'&meta_key='.$key.'&order='.$order.'&caller_get_posts=1');
    }
    if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php if ($i % 2 == 0) { $alt = " class=\"alt\""; } else { $alt = " class=\"no\""; } echo "<div" . $alt;
    if (is_sticky()) { echo " id='sticky' "; } echo ">";
    ?>

    I do not know what else I can do ... my head will explode! :P

  4. werlisa
    Member
    Posted 2 years ago #

    Can anyone help me?

  5. Safirul Alredha (zeo)
    Member
    Posted 2 years ago #

    May I know what's wrong with MichaelH solution?

  6. werlisa
    Member
    Posted 2 years ago #

    Hi Zeo, MichaelH proposed solution according to all the references I have consulted "including wordpress codex" is the correct solution. The problem is that this solution does not work on my site, I think the query post on my site makes it more difficult to make sticky posts are not anchored at the top and in my opinion this part of the code is to blame that:

    $i = 1;
    if(!empty($_GET['sort']))
    {
    $orderby=trim($_GET['sort']);
    $order=trim($_GET['order']);
    $key=trim($_GET['key']);

    Have an idea?

    Regards

  7. Safirul Alredha (zeo)
    Member
    Posted 2 years ago #

    Not tested but do have a try.

    <?php
    $i = 1;
    if ( !empty($_GET['sort']) ) {
      $orderby = trim($_GET['sort']);
      $order = trim($_GET['order']);
      $key = trim($_GET['key']);
    
      query_posts($query_string . '&caller_get_posts=1&orderby=' . $orderby . '&meta_key=' . $key . '&order=' . $order);
    }
    
    if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php
      if ( $i % 2 == 0 ) { $alt = " class=\"alt\""; } else { $alt = " class=\"no\""; }
      echo "<div" . $alt;
      if ( is_sticky() ) { echo " id='sticky' "; } echo ">";
    ?>
    
      <?php the_title(); ?>
    
    <?php endwhile; endif;
      wp_reset_query();
    ?>
  8. werlisa
    Member
    Posted 2 years ago #

    There is no way that goes well,

    I tried your suggestion and everything remains the same, sticky posts continue to be anchored at the top of the index...this is a headache!

    Thanks for your help Zeo

  9. Safirul Alredha (zeo)
    Member
    Posted 2 years ago #

    Oops, try change this:

    query_posts($query_string . '&caller_get_posts=1&orderby=' . $orderby . '&meta_key=' . $key . '&order=' . $order);
    }

    to this:

    }
      query_posts($query_string . '&caller_get_posts=1&orderby=' . $orderby . '&meta_key=' . $key . '&order=' . $order);
  10. werlisa
    Member
    Posted 2 years ago #

    Works! It seems incredible what you can do a little change .. :)

    Thank you very much for your help, especially for you Zoe.

    I have visited your blog Zoe, and there is a very interesting aspect that I put into practice successfully. This is limiting the number of posts by category by adding this feature:

    function limit_posts_per_page() {
    	if ( is_category() )
    		return 2;
    	else
    		return 5; // default: 5 posts per page
    }
    add_filter('pre_option_posts_per_page', 'limit_posts_per_page');

    I wonder if you can do the same with the results of the search ... is it possible?

    By the way, I opened another question about it here:

    http://wordpress.org/support/topic/393462?replies=1

    Regards!

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags