Jump to content



Photo

Excluding post or category from random post widget

wordpress php widget category

  • Please log in to reply
8 replies to this topic

#1 hooko22

hooko22

    Neowinian

  • Joined: 19-April 12

Posted 13 December 2012 - 18:44

Hey there guys.

Ok thing is I really suck at php and I'm trying to exlude a post, or possible a category, either one would work, from a random post widget I have.

If you check out the site you can see the widget on the right side (random paranormal movies) is displaying my sticky welcome message at the top.

I know the category id and post id and have tried a few things to no avail.

Anyway any help would sure be welcome:

<?php
/*
Plugin Name: Simple Random Posts Widget
Plugin URI: http://infobak.nl/si...for-wordpress//
Version: 1.26
Description: Widget which displays random posts
Author: Jan Meeuwesen
Author URI: http://infobak.nl/si...-for-wordpress/
License: GPLv2
Copyright 2012 Jan Meeuwesen
*/
define("DefNoOfPosts", "5"); // default number of random posts to display
class SimpleRandomPostsWidget extends WP_Widget {
function SimpleRandomPostsWidget()
{
parent::WP_Widget( false, 'Simple Random Posts', array('description' => 'Random posts widget') );
}
function widget($args, $instance)
{
global $NewSimpleRandomPosts;
$title = empty( $instance['title'] ) ? 'Simple Random Posts' : $instance['title'];
echo $args['before_widget'];
echo $args['before_title'] . $title . $args['after_title'];
echo $NewSimpleRandomPosts->GetSimpleRandomPosts( empty( $instance['ShowPosts'] ) ? DefNoOfPosts : $instance['ShowPosts'] );
echo $args['after_widget'];
}
function update($new_instance)
{
return $new_instance;
}
function form($instance)
{
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php echo 'Title:'; ?></label>
<input type="text" name="<?php echo $this->get_field_name('title'); ?>" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" value="<?php echo esc_attr($instance['title']); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('ShowPosts'); ?>"><?php echo 'Number of entries:'; ?></label>
<input type="text" name="<?php echo $this->get_field_name('ShowPosts'); ?>" id="<?php echo $this->get_field_id('ShowPosts'); ?>" value="<?php if ( empty( $instance['ShowPosts'] ) ) { echo esc_attr(DefNoOfPosts); } else { echo esc_attr($instance['ShowPosts']); } ?>" size="3" />
</p>
<?php
}
}

class SimpleRandomPosts {
function GetSimpleRandomPosts($noofposts)
{
rewind_posts();
query_posts('orderby=rand&showposts='.$noofposts);
if (have_posts()) :
echo '<ul>';
while (have_posts()) : the_post();
echo '<div id="post-'.get_the_ID().'"><li><a href="'.get_permalink().'">'.get_the_title().'</a></li></div>';
endwhile;


echo '</ul>';
endif;
wp_reset_query();
}
}

$NewSimpleRandomPosts = new SimpleRandomPosts();
function SimpleRandomPosts_widgets_init()
{
register_widget('SimpleRandomPostsWidget');
}
add_action('widgets_init', 'SimpleRandomPosts_widgets_init');

?>


#2 Mr.XXIV

Mr.XXIV

    Shine bright like Iron Man.

  • Tech Issues Solved: 1
  • Joined: 30-April 11
  • Location: Durham, North Carolina
  • OS: OS X Mountain Lion 10.8.5
  • Phone: iPhone 5

Posted 13 December 2012 - 19:23

Use the minus "-" sign when assigning ID's in the WP_Query array.

#3 OP hooko22

hooko22

    Neowinian

  • Joined: 19-April 12

Posted 13 December 2012 - 22:45

Use the minus "-" sign when assigning ID's in the WP_Query array.


Hey there and thanks alot for the reply. I already tried that but could you show me how you would write it, I fear I might have gotten it wrong.

#4 OP hooko22

hooko22

    Neowinian

  • Joined: 19-April 12

Posted 16 December 2012 - 04:05

Use the minus "-" sign when assigning ID's in the WP_Query array.


Can you please at least tell me where I can find the query array. Sorry not saying I don't appreaciate the help.

#5 Mr.XXIV

Mr.XXIV

    Shine bright like Iron Man.

  • Tech Issues Solved: 1
  • Joined: 30-April 11
  • Location: Durham, North Carolina
  • OS: OS X Mountain Lion 10.8.5
  • Phone: iPhone 5

Posted 16 December 2012 - 04:13

Example

<?php $query = new WP_Query( array( 'post_type' => 'post', 'post__not_in' => array( 2, 5, 12, 14, 20 ) ) ); ?>

Those ID's in the array of "post__not_in" are what can be generally excluded.

All of your custom querying options are on this page in the WordPress Codex.

http://codex.wordpre...erence/WP_Query

#6 OP hooko22

hooko22

    Neowinian

  • Joined: 19-April 12

Posted 18 December 2012 - 14:42

Example

<?php $query = new WP_Query( array( 'post_type' => 'post', 'post__not_in' => array( 2, 5, 12, 14, 20 ) ) ); ?>

Those ID's in the array of "post__not_in" are what can be generally excluded.

All of your custom querying options are on this page in the WordPress Codex.

http://codex.wordpre...erence/WP_Query


Thanks again mate for the help.

What is confusing me though is that does the plugin which the original code is from write into the query file? Do I have to go into the query.php file and make the changes in there or can i make them in the original plugin file?

Sorry man you got me a little lost here. Coding has never been my strong suit.

#7 Guth

Guth

    Alba Gu Bráth

  • Joined: 30-December 05
  • Location: Scotland
  • OS: Windows 8 Pro
  • Phone: iPhone 5

Posted 18 December 2012 - 15:31

Thanks again mate for the help.

What is confusing me though is that does the plugin which the original code is from write into the query file? Do I have to go into the query.php file and make the changes in there or can i make them in the original plugin file?

Sorry man you got me a little lost here. Coding has never been my strong suit.

no the plugin is using wp_query (query.php)
just edit the code directly, edit the plugin.
Either from the files or admincp>plugins>edit

#8 OP hooko22

hooko22

    Neowinian

  • Joined: 19-April 12

Posted 18 December 2012 - 15:57

no the plugin is using wp_query (query.php)
just edit the code directly, edit the plugin.
Either from the files or admincp>plugins>edit


The code I posted is from the plugin.

I also can't find any obvious place where I could stuff the exlude or that is the -.

You think I might have to include the line he mentioned before inside the code:

<?php $query = new WP_Query( array( 'post_type' => 'post', 'post__not_in' => array( 2, 5, 12, 14, 20 ) ) ); ?>

#9 threetonesun

threetonesun

    Neowinian Senior

  • Tech Issues Solved: 1
  • Joined: 26-February 02

Posted 18 December 2012 - 16:13

Replace:
query_posts('orderby=rand&showposts='.$noofposts);

with:
query_posts(array('orderby' => 'rand', 'posts_per_page' => $noofposts, 'post_not_in' => array(2,5,12,14,20) ) );




Click here to login or here to register to remove this ad, it's free!