2024/11/06
人様の記事を読んでいて、「すごい!助かった!ありがとう!」と思っても、わざわざコメントに残すのもなぁ…でも何か感謝を表したいなぁと思うことがよくあったので、作りました。
sponsored link
目次
仕様
- function.phpとsingle.phpに追記するだけ
- ボタンカラー設定可
- 一回の訪問で1回だけポチれる
- ポチったあとの取り消し不可
- ipなんかは見てないので再訪問したらまたポチれる
という簡単仕様です。
設置方法
ダッシュボード > 外観 > テーマエディター から編集できます。
single.php
ボタンを設置したい箇所(get_the_IDを使っているので記事ループの中)に挿入してください。
<!-- 役に立ったボタン -->
<?php
// --- ボタン設定 ---
// ボタンの背景色
$btn_bg = "hotpink";
// ボタンの文字色
$btn_color = "white";
// ボタンhover時の背景色
$btn_hover_bg = "pink";
// ボタンクリック後の背景色
$btn_clicked_bg = "lavender";
// ボタンクリッ後の文字色
$btn_clicked_color = "#1E1E1E";
?>
<style>
.yakunitatta {
background-color: <?= $btn_bg ?>;
color:<?= $btn_color ?>;
font-weight: bold;
font-size: 1.3em;
text-align: center;
border-radius: 5px;
box-shadow: 0 2px 5px #999;
width: 100%;
padding: 10px 1em;
float: left;
cursor: pointer;
}
</style>
<?php
$yakunitatta_count = get_post_meta(get_the_ID(), 'yakunitatta');
$yakunitatta_count = empty($yakunitatta_count) ? 0 : $yakunitatta_count[0] ;
?>
<div class="yakunitatta">
<span>役に立った</span> <span id="yakunitatta_heart">♥</span> <span id="yakunitatta_count"><?php echo $yakunitatta_count ?></span>
</div>
<script>
var yakunitatta_clicked = false;
$( '.yakunitatta' ).on({
'mouseenter': function () { if (yakunitatta_clicked == false) $(this).css("background-color", "<?= $btn_hover_bg ?>") },
'mouseleave': function () { if (yakunitatta_clicked == false) $(this).css("background-color", "<?= $btn_bg ?>") },
'click': function(){
if (yakunitatta_clicked == false){
$.ajax({
type: 'POST',
url: ajaxurl,
data: {
'action' : 'yakunitatta_count_add',
'id' : <?php the_ID();?>
}
});
$("#yakunitatta_count").text(<?php echo $yakunitatta_count ?> + 1);
$(this).css({
"color":"<?= $btn_clicked_color ?>",
"box-shadow":"none" ,
"background-color": "<?= $btn_clicked_bg ?>",
"cursor": "auto"
});
$("#yakunitatta_heart").css("color","red");
yakunitatta_clicked = true;
}
}
});
</script>
function.php
最後の「?>」の前に挿入してください。
/***** 役に立ったボタン *****/
/** wordpressでajaxを使うための変数を設定 **/
function add_ajaxurl() {
?>
<script>
var ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
</script>
<?php
}
add_action( 'wp_head', 'add_ajaxurl', 1 );
/** ボタンが押されたときの処理 **/
function yakunitatta_count_add(){
$id = $_POST['id'];
$key = 'yakunitatta';
$count = get_post_meta( $id, $key);
if (empty($count)){
add_post_meta($id,$key,1);
}else{
$count[0]++;
update_post_meta($id,$key,$count[0]);
}
die();
}
add_action( 'wp_ajax_yakunitatta_count_add', 'yakunitatta_count_add' );
add_action( 'wp_ajax_nopriv_yakunitatta_count_add', 'yakunitatta_count_add' );
コメント
[…] WordPressに「役に立ったボタン」を設置する【プラグイン不要】 […]
by 役に立ったボタンデモ | かたつむりノート 2019年8月22日 09:59