Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a page template that allows users to create and update posts from the front end. I also am using 2 plugins, 1 that allows the user to rate posts from 1-5 stars and another that allows them to favorite the posts.

I also have a page to allows the user to toggle between sorting the posts by date/category/post-type/etc. You can see the page here: http://www.theseattlevine.com/the-vine/

The problem is, if I sort the posts by either the star rating or by the number of favorites it has, Wordpress only returns posts that have that meta value and does NOT show posts that have not yet received it. With that being said, I need to do 1 of 2 things:

  1. Automatically set the meta value to a default value when the post is created or
  2. Alter the wp_query to also show posts that do not yet have the value.

Anyone know how I can do either of these things? I prefer #1, but either will work.

Here is the page template code, if that's useful.

        <?php

    /**
     * Template Name: New UserPost
     * 
     * A Page template for Submitting User Post   
     * 
     */
    if(!is_user_logged_in()){
        header("location:". esc_url(home_url('')));
        ?>
    <script type="text/javascript">
        window.location = '<?PHP echo esc_url(home_url('')); ?>';
    </script>
        <?PHP
        die('');
    }


    wp_enqueue_script('jquery');

    function add_header(){
        ?>
    <link rel="stylesheet" type="text/css" 
          href="<?PHP bloginfo('template_directory'); ?>/css/redmond/jquery-ui-1.9.1.custom.min.css" />
    <script type="text/javascript" src="<?PHP bloginfo('template_directory') ?>/js/jquery-ui-1.9.1.custom.min.js"></script>
    <script type="text/javascript" src="<?PHP bloginfo('template_directory'); ?>/fancybox/jquery.mousewheel-3.0.4.pack.js"></script>
    <script type="text/javascript" src="<?PHP bloginfo('template_directory'); ?>/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
    <link rel="stylesheet" type="text/css" href="<?PHP bloginfo('template_directory'); ?>/fancybox/jquery.fancybox-1.3.4.css" media="screen" />
    <script type="text/javascript">
        function show_loading_div(){
            data="<p>Uploading your file, one moment...</p>";
            data+="<img src=\"<?PHP echo get_bloginfo('template_directory'); ?>/images/ajaxloading_bar.gif\" />";
            jQuery('#fancybox-frame').contents().find("#upload_frm").hide();
            jQuery('#fancybox-frame').contents().find("#MSG_DIV").html(data);
        }
        function get_featured_image(){

            if(jQuery('#featured_img_id').val()==-1){
                return;
            }
            jQuery('#featured_img_div').html('');
            jQuery.ajax({
                 url:'<?PHP echo get_permalink(); ?>',
                 data:"featured_img_id=" + jQuery('#featured_img_id').val() + "&req=get_featured_image",
                 beforeSend:function(){
                     jQuery('#featured_img_loading').show();
                 },complete:function(){
                     jQuery('#featured_img_loading').hide();
                 },success:function(data){
                     jQuery('#featured_img_div').html(data);
                 }
             }); 
        }
        jQuery().ready(function(){

            jQuery('.loading,#featured_img_action').hide();

            jQuery('#dialog_message').dialog({
                autoOpen:false,
                buttons:{
                    'Ok':function(){
                        jQuery(this).dialog('close');
                    }
                }
            });
            jQuery('#cancel_btn').click(function(){
                if(jQuery('#post_id').val()==-1){
                    jQuery('#dialog_message').html('Post has been discarded').dialog('option',{
                        buttons:{
                            'Ok':function(){
                               jQuery(this).html('One moment...');
                                window.location='<?PHP echo esc_url(home_url('dashboard/')); ?>'
                            }
                        }
                    }).dialog('open');
                }else{
                   jQuery.ajax({
                        url:'<?PHP echo get_permalink(); ?>',
                        data:jQuery('#tsv_user_post_form').serialize() + "&req=discard_post",
                        beforeSend:function(){
                            jQuery('#submit_loading').show();
                        },complete:function(){
                            jQuery('#submit_loading').hide();
                        },success:function(data){
                            jQuery('#exe').html(data);
                        }
                    }); 
                }
            })

            jQuery('#upload_img').click(function(){
               jQuery.fancybox({
                    'autoScale'     : true,
                    'transitionIn'  : 'none',
                    'transitionOut' : 'none',
                    'type'          : 'iframe',
                    'href'          : "<?PHP echo esc_url(home_url('image-upload')) ?>?post_id=" + jQuery('#post_id').val()+'&img_id=' + jQuery('#featured_img_id').val()  ,
                    'onClosed'      : function(){
                                        get_featured_image();
                                        if(jQuery('#featured_img_id').val()!=-1){
                                            jQuery('#featured_img_action').show()
                                        }
                                     }
                });
           });

            jQuery('#remove_image_btn').click(function(){

                jQuery.ajax({
                    url:'<?PHP echo esc_url(home_url('new-post')); ?>',
                    data:'req=delete_attach&aid=' + jQuery('#featured_img_id').val(),
                    beforeSend:function(){
                        jQuery('#featured_img_div').html('Deleting Image....');
                        jQuery('#featured_img_action').hide()
                    },
                    success:function(data){
                        jQuery('#featured_img_div').html('');
                        jQuery('#featured_img_id').val('-1');
                    },
                    complete:function(){
                        jQuery('#remove_image_btn').hide();
                    }
                })


            });

            jQuery('#user_post_submit,#user_post_preview,#user_post_savedraft').click(function(){
                var req;
                switch(jQuery(this).attr('id')){
                    case 'user_post_submit':
                        req='publish';
                        break;
                    case 'user_post_savedraft':
                        req='save_draft';
                        break;
                    case 'user_post_preview':
                        req='post_preview';
                        break;

                }
                jQuery.ajax({
                    url:'<?PHP echo get_permalink(); ?>',
                    data:jQuery('#tsv_user_post_form').serialize() + "&req=" + req,
                    beforeSend:function(){
                        jQuery('#submit_loading').show();
                    },complete:function(){
                        jQuery('#submit_loading').hide();
                    },success:function(data){
                        //alert(data);
                        jQuery('#exe').html(data);
                    }
                })
            })
        });
    </script>
        <?PHP
    }

    add_action('wp_head','add_header');
    switch($_REQUEST['req']){

        case 'delete_attach':

            $attachment_id = $_REQUEST['aid'];
            wp_delete_post($attachment_id,TRUE);
            die('');
            break;
        case 'discard_post':
            $post_id = $_REQUEST['post_id'];
            wp_delete_post($post_id,TRUE);
            ?>
       <script type="text/javascript">
       jQuery('#dialog_message').html('Post has been discarded').dialog('option',{
           buttons:{
               'Ok':function(){
                  jQuery(this).html('One moment...');
                   window.location='<?PHP echo esc_url(home_url('dashboard/')); ?>'
               }
           }
       }).dialog('open');
       </script>
            <?PHP
           die('');
           break;
       case 'get_featured_image':
           $featured_img = $_REQUEST['featured_img_id'];
           echo wp_get_attachment_image($featured_img, array(100,100));
           die('');
           break;
       case 'publish':
       case 'save_draft':
       case 'post_preview':


        $error_flag    = FALSE;
        $error_message = array();
        $post_id       = $_REQUEST['post_id'];
        $categories    = array($_REQUEST['cat']);
        $featured_img  = $_REQUEST['featured_img_id'];
        /**
         * Validation Step(s)
         */
        if(empty($_REQUEST['user_post_title'])){
            $error_flag = TRUE;
            $error_msg[]=array(
                'key'      => 'error_user_post_title',
                'value'    => __('Please enter a title','tsv'),
            );
        }elseif(strlen($_REQUEST['user_post_title'])>125){
            $error_flag = TRUE;
            $error_msg[]=array(
                'key'      => 'error_user_post_title',
                'value'    => __('Please enter a title with less then 125 characters','tsv'),
            );
        }
        if(empty($_REQUEST['user_post_summary'])){
            $error_flag = TRUE;
            $error_msg[]=array(
                'key'      => 'error_user_post_summary',
                'value'    => __('Please enter a short summary of the post','tsv'),
            );
        }elseif(strlen($_REQUEST['user_post_summary'])>250){
            $error_flag = TRUE;
            $error_msg[]=array(
                'key'      => 'error_user_post_summary',
                'value'    => __('Please enter a summary with less then 250 characters','tsv'),
            );
        }

        if(empty($_REQUEST['user_post_content'])){
            $error_flag = TRUE;
            $error_msg[]=array(
                'key'      => 'error_user_post_content',
                'value'    => __('Please enter some content','tsv'),
            );
        }

        if(empty($_REQUEST['cat']) || $_REQUEST['cat']==-1){
            $error_flag = TRUE;
            $error_msg[]=array(
                'key'      => 'error_cat',
                'value'    => __('Please choose a category','tsv'),
            );
        }

        if(count($error_msg)>0 && $error_flag){
            ?>
            <script type="text/javascript">
                jQuery('.error').html('').hide();
                var temp=<?PHP echo json_encode($error_msg); ?>;
                for(i=0;i<temp.length;i++)
                    jQuery('#' + temp[i].key ).show().html(temp[i].value);
                jQuery("html,body").animate({ scrollTop: 0 }, "slow");
            </script>
            <?PHP
        }else{
            $post_param = array(
                'post_content'   => $_REQUEST['user_post_content'],
                'post_title'     => $_REQUEST['user_post_title'],
                'post_excerpt'     => $_REQUEST['user_post_summary'],
                'post_type'      => 'tsv_userpost',
                'tax_input'      => array('category'=>$categories)
            );

            if(!empty($_REQUEST['user_post_tags'])){
                $post_param['tags_input'] = array_slice(explode(",", $_REQUEST['user_post_tags']),0,5);
            }

            if($post_id!=-1){
                $post_param['ID']=$post_id;
            }
            /**
             * Action Based on The Button Pressed
             */
            switch($_REQUEST['req']){
                case 'publish':
                    $post_param['post_status'] = 'publish';
                    $new_post_id=wp_insert_post($post_param);
                    ?>
                    <script type="text/javascript">
                        jQuery('#dialog_message').html('Post published succesfully!').dialog('option',{
                            buttons:{
                                'Ok':function(){
                                    jQuery(this).html('One moment....');
                                    window.location='<?PHP echo esc_url(home_url('dashboard')); ?>'
                                }
                            }
                        }).dialog('open');
                    </script>
                    <?PHP
                    break;
                case 'save_draft':

                     $post_param['post_status'] = 'draft';
                     $new_post_id=wp_insert_post($post_param);

                     ?>
                    <script type="text/javascript">
                        jQuery('#post_id').val('<?PHP echo $new_post_id; ?>')            
                        jQuery('#dialog_message').html('Post draft saved').dialog('option',{
                            buttons:{
                                'Ok':function(){
                                    jQuery(this).dialog('close');
                                }
                            }
                        }).dialog('open');
                    </script>
                    <?PHP
                    break;
                case 'post_preview':
                     $post_param['post_status'] = 'draft';
                     $new_post_id=wp_insert_post($post_param);
                     ?>
                    <script type="text/javascript">
                        jQuery('#post_id').val('<?PHP echo $new_post_id; ?>')            
                        //jQuery('#dialog_message').html('Loading preview, one moment...').dialog('open');
                        jQuery('#dialog_message').html('Please click Ok To load Preview').dialog('option',{buttons:{
                            'Ok':function(){
                                window.open('<?PHP echo esc_url(home_url('?page_id=' . $new_post_id . '&preview=true')); ?>');
                                jQuery(this).dialog('close');
                            }
                        }}).dialog('open');
                        /*jQuery('#preview_link').attr({'href':'<?PHP echo esc_url(home_url('?page_id=' . $new_post_id . '&preview=true')); ?>'})
                        jQuery('#preview_link')[0].click();*/

                        //window.open('<?PHP echo esc_url(home_url('?page_id=' . $new_post_id . '&preview=true')); ?>');
                    </script>
                    <?PHP
                    break;
            }

            if($featured_img!=-1){
                update_post_meta($new_post_id,'_thumbnail_id',$featured_img);
            }else{
                delete_post_meta($new_post_id,'_thumbnail_id');
            }
        }
        die('');
        break;
    }

    global $current_user;
    get_currentuserinfo();

    if(isset($_GET['post_id'])){
        $post_id  = $_GET['post_id'];
        $post_obj = get_post($post_id);
        if($post_obj->post_author!=$current_user->ID){
            header("location:" . esc_url(home_url('')));
            die('');
        }else{
            $featured_img_id = get_post_meta($post_id,'_thumbnail_id',TRUE);
            if(empty($featured_img_id)){
                $featured_img_id = -1;
            }
        }
    }else{
        $post_id = -1; // -1 Will be for New Post
        $featured_img_id = -1;
    }


    get_header();
    ?>
            <section id="primary">
                <div id="content" role="main"> 
                    <?php userpost_menu(); ?>



    <form action="" method="post" name="" id="tsv_user_post_form" enctype="multipart/form-data" >
        <input placeholder="Enter Your Title..." type="text" 
               value="<?PHP echo ((!empty($post_obj->post_title))?$post_obj->post_title:''); ?>" name="user_post_title" id="user_post_title" class="inputwide" />
        Max 125 characters
        <div class="error" id="error_user_post_title"></div>
        <br />

        <input placeholder="Enter short description..." type="text" 
               value="<?PHP echo ((!empty($post_obj->post_excerpt))?$post_obj->post_excerpt:''); ?>" name="user_post_summary" id="user_post_summary" class="inputwide" />
        Max 250 characters
        <div class="error" id="error_user_post_summary"></div>
        <br />



        <?php 
        $cat_ids = array(90,91,92,93,94);
        $user_cats = array (
                'include' => implode(",", $cat_ids), //Only shows these 5 categories
                'hide_empty' => 0, 
                'show_option_none' =>'Choose category:',
                'sort_by'=>'name', 
        );
        $tag_str = NULL;
        if(!empty($post_obj)){
            $categories = wp_get_post_categories($post_obj->ID);
            $tags       = wp_get_post_tags($post_obj->ID,array('fields'=>'all'));
            if(count($categories)>0){
                foreach($categories as $cat) {
                    if(in_array($cat, $cat_ids)){
                        $user_cats['selected'] = $cat;
                    }
                }
            }
            if(count($tags)>0){

                foreach($tags as $tag) {
                    $tag_str[] = $tag->name;
                }
                $tag_str = implode(",", $tag_str);
            }
        }
        ?> <div class="styled-select"> <?php wp_dropdown_categories($user_cats); ?></div><?php
        ?>
        <div class="error" id="error_cat"></div>
        <br />
        <input type="hidden"  value="<?PHP echo $post_id; ?>"         
               name="post_id" id="post_id" />
        <input type="hidden" value="<?PHP echo $featured_img_id; ?>" 
               name="featured_img_id" id="featured_img_id" />


        <textarea name="user_post_content" id="user_post_content" placeholder="Enter your content..." class="inputwide"><?PHP echo ((!empty($post_obj->post_content))?$post_obj->post_content:''); ?></textarea>
        <div class="error" id="error_user_post_content"></div>
        (You can use basic html in this box. <a href="#">Click here for more info ADDLINK!!!</a>.)
        <br /><br />
        <label>Tags:</label> 
        <input placeholder="Seperated by commas" type="text" 
               value="<?PHP echo ((!is_null($tag_str)?$tag_str:'')); ?>" 
               name="user_post_tags" id="user_post_tags" /> (note: Only first 5 tags will be saved)
        <br /><br />

        <input class="cbutton" type="button" id="upload_img" value="Add/Switch Featured Image" />

            <div style="margin-top:10px;" id="featured_img_loading" class="loading">
                <img src="<?PHP bloginfo('template_directory'); ?>/images/ajaxloading-circul.gif" />
            </div>
            <div id="featured_img_ct" style="position:relative">
            <div style="margin-top:10px;" id="featured_img_div">
                <?PHP
                if($featured_img_id!=-1){
                    echo wp_get_attachment_image($featured_img_id, array(150,150));
                }
                ?>
            </div>
            <div id="featured_img_action" style="position:absolute;top:10px;left:100px;">
                <img src="<?PHP bloginfo('template_directory'); ?>/images/b_drop.png" id="remove_image_btn" style="cursor:pointer;" />
            </div>
            </div>

        <br /><br />




        <div class="loading" id="submit_loading">
            <img src="<?PHP bloginfo('template_directory'); ?>/images/ajaxloading_bar.gif" />
        </div>
        <div class="submit_div">
            <input class="cbutton" type="button"   name="submit_btn" id="user_post_submit"    value="<?PHP echo ((!empty($post_obj))?'Update':'Publish'); ?>">
            <input class="cbutton" type="button"   name="submit_btn" id="user_post_savedraft" value="Save Draft">
            <input class="cbutton" type="button"   name="submit_btn" id="user_post_preview"   value="Preview">
            <input class="cbutton" type="button" value="Discard" name="cancel" id="cancel_btn" />
        </div>

       <br /> 
    </form>





                </div><!-- #content -->
            </section><!-- #primary -->
    <?PHP
    if($featured_img_id!=-1){
        add_action('wp_footer','add_wp_footer');
    }
    function add_wp_footer(){
        ?>
    <script type="text/javascript">
        jQuery().ready(function(){
            jQuery('#featured_img_action').show();
        });
    </script>                
        <?PHP
    }
    ?>                
    <div id="dialog_message"></div> 
    <div style="display:none" id="for_preview">
        <a id="preview_link" target="_blank"></a>
    </div>
    <?php  get_sidebar('newpost'); ?>
    <?php  get_footer(); ?>
share|improve this question
add comment

1 Answer

up vote 2 down vote accepted

Add this to your functions.php in your template folder.

<?php

//Set Default Meta Value
function set_default_meta_new_post($post_ID){
$current_field_value = get_post_meta($post_ID,'YOURMETAKEY',true); //change YOUMETAKEY to a default 
$default_meta = '100'; //set default value

if ($current_field_value == '' && !wp_is_post_revision($post_ID)){
    add_post_meta($post_ID,'YOURMETAKEY',$default_meta,true);
}
return $post_ID;
}

add_action('wp_insert_post','set_default_meta_new_post');

?>
share|improve this answer
    
This worked beautifully, thank you! –  Eckstein Dec 10 '12 at 19:59
    
No problem, glad it worked out for you. –  jochem Dec 10 '12 at 22:25
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.