I have created a function for saving posts as "featured" and show them at the homepage. It works with a custom checkbox in the admin panel. I did the function with help on forums but i would like to add to this function the ability to set a specific order number to every featured post and show them at the front page in this order. (choosing wich one is the first, wich is the second, third, etc…) Anyone can help? Thank you!
// FEATURED POST FUNCTION
add_action('add_meta_boxes', 'add_checkbox_featured');
function add_checkbox_featured() {
add_meta_box('is_featured', 'Featured', 'print_checkbox_featured', 'post', 'side');}
function print_checkbox_featured() {
global $post;
$checked = get_post_meta($post->ID, '_featured', true) ? 'checked="checked"' : '';
echo '<label for="checkbox_is_featured">Show at the front page <input id="checkbox_is_featured" name="is_featured" type="checkbox" value="1" '.$checked.'/</label>';
}
add_action('save_post', 'save_checkbox_featured');
function save_checkbox_featured($post_id){
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;
if ( !current_user_can( 'edit_post', $post_id ) )
return $post_id;
if ($_POST['is_featured']){
add_post_meta($post_id, '_featured', '1');
}else{
delete_post_meta($post_id, '_featured');
}
}
Try this for adding order for the featured post but on home page you have to use meta_query
to display posts by entered order
add_action('add_meta_boxes', 'add_checkbox_featured');
//add_action('add_meta_boxes', 'add_checkbox_featured_order');
function add_checkbox_featured() {
add_meta_box('is_featured', 'Featured', 'print_checkbox_featured', 'post', 'side');
}
/*function add_checkbox_featured_order() {
add_meta_box('is_featured_order', 'Featured Order', 'print_checkbox_featured_order', 'post', 'side');
}
function print_checkbox_featured_order() {
global $post;
}*/
function print_checkbox_featured() {
global $post;
$checked = get_post_meta($post->ID, '_featured', true) ? 'checked="checked"' : '';
echo '<label for="checkbox_is_featured">Show at the front page <input id="checkbox_is_featured" name="is_featured" type="checkbox" value="1" '.$checked.'/></label>';
$forder = get_post_meta($post->ID, '_featured_order', true);
echo '<label for="checkbox_is_featured_order">Enter featured order
<input id="checkbox_is_featured_order" name="is_featured_order" type="text" value="'.$forder.'"/></label>';
}
add_action('save_post', 'save_checkbox_featured');
function save_checkbox_featured($post_id){
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;
if ( !current_user_can( 'edit_post', $post_id ) )
return $post_id;
if ($_POST['is_featured']){
add_post_meta($post_id, '_featured', '1');
}else{
delete_post_meta($post_id, '_featured');
}
if ($_POST['is_featured_order']){
add_post_meta($post_id, '_featured_order', $_POST['is_featured_order']);
}else{
delete_post_meta($post_id, '_featured_order');
}
}