web-dev-qa-db-fra.com

Ajouter une meta_value par défaut aux nouveaux messages

J'ai un modèle de page qui permet aux utilisateurs de créer et de mettre à jour des publications à partir du front-end. J'utilise également 2 plugins, l'un qui permet à l'utilisateur de noter les messages de 1 à 5 étoiles et l'autre qui leur permet de mettre en favori les messages.

J'ai également une page permettant à l'utilisateur de basculer entre le tri des publications par date/catégorie/type de publication/etc. Vous pouvez voir la page ici: http://www.theseattlevine.com/the-Vine/

Le problème est que, si je trie les publications en fonction du nombre d'étoiles ou du nombre de favoris, Wordpress renvoie uniquement les publications ayant cette méta-valeur et ne montre PAS les publications qui ne l'ont pas encore reçue. Cela dit, je dois faire l'une des deux choses suivantes:

  1. Définissez automatiquement la méta-valeur sur une valeur par défaut lorsque la publication est créée ou
  2. Modifiez wp_query pour afficher également les publications qui n'ont pas encore la valeur.

Quelqu'un sait comment je peux faire l'une ou l'autre de ces choses? Je préfère n ° 1, mais ça va marcher.

Voici le code du modèle de page, si cela est utile.

        <?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(); ?>
2
Eckstein

Ajoutez ceci à votre functions.php dans votre dossier de modèles.

<?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');

?>
4
jochem