where to edit sidebar??
-
Hi everyone:
I have a WordPress site with 3 categories.
I want to edit the Customizr theme’s sidebar to display recent posts in the current category only.
I have been searching all night long and cannot find any sidebar.php file. There’s a class-content-sidebar.php file, but all it does is call dynamic-sidebar (‘ right ‘) and I am having absolutely no luck on where this call goes to in the code to edit.
Is anyone able to point me to the correct file/method I need to edit so I can display recent posts from the current category only?
Thank you!
-
A quick overview of WP “sidebars”. They’re more than sidebars. They’re widget areas and can be as many as the theme author wants. Besides, you can always declare more of them through functions, in functions.php.
To cut a long story short, the widget areas of Customizr are: Left sidebar, Right sidebar and 3 more footer areas (footer area one, footer area two and footer area three).
You can control the content of each of those from Appearance>Widgets
Just drag the widgets you want in the areas you want.If you use left or right sidebar make sure you select the proper layout for your page/post (so that sidebar is actually rendered).
One more thing: if you want different content in your widget areas depending on what page is loaded, you can use widget logic (it’s a plugin), which adds the possibility to use WP’s conditionals on each widget. (is_page(), is_home(), is_search(), is_archive(), etc…)
And yes, if you want more than the default WP widgets there are many more, available through plugins (login widget, custom lists of posts or other content, images, tabbed widgets, elastic widgets, … you got the point).
Hi,
You can display the recent posts of the current category by filtering the query of WordPress built-in recent post widget.1) in appearance > widget, drag and drop the recent post widget in the wanted sidebar of the theme
2) copy/paste the following code in your functions.php
add_filter( 'widget_posts_args', 'my_widget_posts_args'); function my_widget_posts_args() { if ( is_category() ) { //adds the category parameter in the query if we display a category $cat = get_queried_object(); return array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true, 'cat' => $cat -> term_id ); } else {//keeps the normal behaviour if we are not in category context return array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ); } }
There are always useful filters in WordPress!
@acub : widget logic is an excellent plugin but I am not sure it allows this.
Hope this helps 😉
NicolasHey the previous code need to be updated, we miss the $instance var!
add_filter( 'widget_posts_args', 'my_widget_posts_args'); function my_widget_posts_args($instance) { if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) ) $number = 10; if ( is_category() ) { //adds the category parameter in the query if we display a category $cat = get_queried_object(); return array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true, 'cat' => $cat -> term_id ); } else {//keeps the normal behaviour if we are not in category context return array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ); } }
Thank you Nikeo!
I will have to give your code suggestions a try later. Hopefully they will work. I will let you know!
Hi Nikeo!
I’ve had to alter your code slightly, but have it working now the way I would like.
Altered code is as follows:
add_filter( 'widget_posts_args', 'my_widget_posts_args'); function my_widget_posts_args($instance) { if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) ) $number = 5; $args = array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ); if ( is_category() ) { //adds the category parameter in the query if we display a category $cat = get_queried_object(); $args['cat'] = $cat->term_id; } elseif ( is_single() ) { //adds the category parameter in the query if we display a post global $post; $cat = get_the_category($post->ID); $cat_parent = $cat[0]->category_parent; if ($cat_parent) { $cat = get_category($cat_parent); $cat = $cat->term_id; } else { $cat = $cat[0]->term_id; } $args["cat"] = $cat; } return $args; }
Thanks again for your help!
As a follow up, is there a similar way to do the same thing with the “Comments” widget?
Yep. Just use widget_comments_args hook.
Basic syntax:add_filter( 'widget_comments_args', 'custom_comments_args', 10, 1 ); function custom_comments_args( $args ) { $args = array( 'number' => 5, 'post_type' => 'attachment', 'status' => 'approve', 'post_status' => 'inherit' ); return $args; }
Of course, you need to change the $args to whatever you need.
Thanks ACUB.
I have 3 categories on my site, and the requirement is to show the last 8 comments from all the posts within the particular category. As in 8 comments total, not 8 from each post.
I looked at this page:
http://codex.wordpress.org/Function_Reference/get_comments
and didn’t see anything to restrict comments to a particular category, only posts.So to me this says there isn’t a way to do it using the hook method.
Am I wrong?
Thanks!
No, you’re not. You can’t restrict comments to a particular category with ‘widget_comments_args’ hook, but you haven’t specified the restriction criteria in your question.
Here are two solutions on how to limit comments based on category:http://wordpress.stackexchange.com/a/59505
http://wordpress.org/support/topic/get-last-comments-per-category?replies=14#post-1339790
Haven’t tested any of them, but on first glance they both seem valid.
Thanks Acub!
I’ll have to check them out.
I am currently using the Spacious theme and would like to add separate dropdown for each category. I see the line
<?php spacious_sidebar_select(); ?>
in mypage.php
inside the theme folder but where do I find it?How can I make the changes to, have it like this: StackOverflow WordPress
@wpnewbie14, this is the Support Forum for the Customizr Theme.
Post your problem here
- The topic ‘where to edit sidebar??’ is closed to new replies.