在“a”上工作;Like
"E;vs“;Dislike
"E;用于WordPress中的博客文章。虽然一切正常,但这里的目的是让它为来宾和登录用户服务,但更重要的是;只允许同一用户对每篇文章单击一次(喜欢或不喜欢)(试图了解我是否可以在这里使用WordPress会话?)。
Idea:
来宾/注册和登录用户单击“喜欢”或“不喜欢”=该特定帖子的两个按钮均已停用(无法再次单击)。如果同一用户访问同一网站上的不同帖子,而该用户尚未单击这两个按钮中的任何一个;他们可以单击“喜欢”或“不喜欢”。我希望我说的很清楚,希望你们都能理解我。我正在寻找建议和代码示例,以及如何实现这一点。
As of now; 用户(无论是否登录)可以单击Like
或Dislike
他们想多少次就多少次,而计数却一直在滴答作响——这并不理想。
This is the code I\'m working on:
add_filter( \'the_content\', \'post_likes\' );
function post_likes( $content ) {
// only on posts
if ( is_singular( \'post\' ) ) {
ob_start();
?>
<ul class="likes">
<li class="likes__item likes__item--like">
<a href="<?php echo add_query_arg( \'post_action\', \'like\'); ?>">
Useful (<?php echo get_post_like_count(\'likes\') ?>)
</a>
</li>
<li class="likes__item likes__item--dislike">
<a href="<?php echo add_query_arg(\'post_action\', \'dislike\'); ?>">
Dislike (<?php echo get_post_like_count(\'dislikes\') ?>)
</a>
</li>
</ul>
<?php
$output = ob_get_clean();
return $output . $content;
} else {
return $content;
}
}
function get_post_like_count( $type = \'likes\' ) {
// like or dislike count
$current_count = get_post_meta( get_the_id(), $type, true );
return ( $current_count ? $current_count : 0 );
}
add_action( \'template_redirect\', \'process_post_like_click\' );
function process_post_like_click() {
$processed_like = false;
$redirect = false;
// Check if like or dislike
if ( is_singular( \'post\' ) ) {
if ( isset( $_GET[\'post_action\'] ) ) {
if ( $_GET[\'post_action\'] == \'like\' ) {
// Like
$like_count = get_post_meta( get_the_id(), \'likes\', true );
if ( $like_count ) {
$like_count = $like_count + 1;
} else {
$like_count = 1;
}
$processed_like = update_post_meta( get_the_id(), \'likes\', $like_count );
} elseif ( $_GET[\'post_action\'] == \'dislike\' ) {
// Dislike
$dislike_count = get_post_meta( get_the_id(), \'dislikes\', true );
if ( $dislike_count ) {
$dislike_count = $dislike_count + 1;
} else {
$dislike_count = 1;
}
$processed_like = update_post_meta( get_the_id(), \'dislikes\', $dislike_count );
}
if ( $processed_like ) {
$redirect = get_the_permalink();
// how do I deactivate both buttons on this post while keping them intact on other posts?
}
}
}
// redirect (refresh)
if ( $redirect ) {
wp_redirect( $redirect );
die;
}
}
谢谢大家!