我有一个页面模板,允许用户从前端创建和更新帖子。我还使用了两个插件,一个允许用户对帖子进行1-5星级评分,另一个允许用户对帖子进行喜爱。
我还有一个页面,允许用户在按日期/类别/帖子类型等排序帖子之间进行切换。您可以在此处看到该页面:http://www.theseattlevine.com/the-vine/
问题是,如果我按照星级或收藏夹数量对帖子进行排序,Wordpress只会返回具有该元数据的帖子,而不会显示尚未收到该元数据的帖子。说到这里,我需要做两件事中的一件:
创建帖子时,自动将meta值设置为默认值,或更改wp\\u查询以显示尚未具有该值的帖子有人知道我怎么做这两件事吗?我更喜欢#1,但两者都可以。
如果有用的话,下面是页面模板代码。
<?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(); ?>