我在wordpress(后端)中使用jQuery创建了一个5星评级系统插件。星值也会更新到后期元表。如果我发布了一个帖子3星并更新了页面,则该值将存储在post meta中,但在更新页面后,评级将不会显示。所以我的问题是如何在更新页面之后保留这些值,直到我们手动编辑星级。
<?php
/* Plugin Name: Star Rating
* Version: 1.0
*/
class starrating{
public function __construct(){
add_action('add_meta_boxes',array($this,'my_meta'));
add_action('admin_enqueue_scripts',array($this ,'starscript' ));
add_action('save_post', array($this,'save_field'));
}
public function my_meta()
{
add_meta_box(
'my_custom_meta',
'Created By',
array($this,'my_meta_box_mes'),
'a_z',
'side',
'low'
);
}
public function save_field($post_id)
{
update_post_meta($post_id,'starrating',$_POST['rating']);
}
public function my_meta_box_mes()
{
?>
<label>Please Rate Your Ratings !!</label>
<p>
<input type="hidden" name="rating" id="rating" />
<ul class="rating" onMouseOut="resetRating();">
<li name="star" value="one" onmouseover="highlightStar(this);" onmouseout="removeHighlight();" onclick="addRating(this);">★</li>
<li name="star" value="two" onmouseover="highlightStar(this);" onmouseout="removeHighlight();" onclick="addRating(this);">★</li>
<li name="star" value="three" onmouseover="highlightStar(this);" onmouseout="removeHighlight();" onclick="addRating(this);">★</li>
<li name="star" value="four" onmouseover="highlightStar(this);" onmouseout="removeHighlight();" onclick="addRating(this);">★</li>
<li name="star" value="five" onmouseover="highlightStar(this);" onmouseout="removeHighlight();" onclick="addRating(this);">★</li>
</ul>
</p>
<?php
}
public function starscript(){
wp_enqueue_script( 'star_id',content_url() . '/plugins/star_rating/js/starrating.js' );
wp_enqueue_script('jquery_id', 'https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js');
wp_enqueue_style( 'styl_id',content_url() . '/plugins/star_rating/css/star.css' );
}
}
$star=new starrating();
?>