我找到了一个插件,它主要实现了我想要的功能。但希望它能被改写成一个简短的代码,只显示我想要的地方,而不是在每个帖子上。
这就是js的爱。js公司
jQuery( document ).on( \'click\', \'.love-button\', function() {
var post_id = jQuery(this).data(\'id\');
jQuery.ajax({
url : postlove.ajax_url,
type : \'post\',
data : {
action : \'post_love_add_love\',
post_id : post_id
},
success : function( response ) {
jQuery(\'#love-count\').html( response );
}
});
return false;
})
以及php ajax测试。php
<?php
/**
* Plugin Name: Post Love
* Plugin URI: http://danielpataki.com
* Description: Allows users to love your posts
* Version: 1.0.0
* Author: Daniel Pataki
* Author URI: http://danielpataki.com
* License: GPL2
*/
add_action( \'wp_enqueue_scripts\', \'ajax_test_enqueue_scripts\' );
function ajax_test_enqueue_scripts() {
if( is_single() ) {
wp_enqueue_style( \'love\', plugins_url( \'/love.css\', __FILE__ ) );
}
wp_enqueue_script( \'love\', plugins_url( \'/love.js\', __FILE__ ), array(\'jquery\'), \'1.0\', true );
wp_localize_script( \'love\', \'postlove\', array(
\'ajax_url\' => admin_url( \'admin-ajax.php\' )
));
}
add_filter( \'the_content\', \'post_love_display\', 99 );
function post_love_display( $content ) {
$love_text = \'\';
if ( is_single() ) {
$love = get_post_meta( get_the_ID(), \'post_love\', true );
$love = ( empty( $love ) ) ? 0 : $love;
$love_text = \'<p class="love-received"><a class="love-button" href="\' . admin_url( \'admin-ajax.php?action=post_love_add_love&post_id=\' . get_the_ID() ) . \'" data-id="\' . get_the_ID() . \'">give love</a><span id="love-count">\' . $love . \'</span></p>\';
}
return $content . $love_text;
}
add_action( \'wp_ajax_nopriv_post_love_add_love\', \'post_love_add_love\' );
add_action( \'wp_ajax_post_love_add_love\', \'post_love_add_love\' );
function post_love_add_love() {
$love = get_post_meta( $_REQUEST[\'post_id\'], \'post_love\', true );
$love++;
update_post_meta( $_REQUEST[\'post_id\'], \'post_love\', $love );
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {
echo $love;
die();
}
else {
wp_redirect( get_permalink( $_REQUEST[\'post_id\'] ) );
exit();
}
}
最后是css的爱。css
.entry-content .love-button {
background: #f14864;
color: #fff;
padding:11px 22px;
display:inline-block;
border:0px;
text-decoration: none;
box-shadow: 0px 6px #d2234c;
position:relative;
}
.entry-content .love-button:hover{
top:3px;
box-shadow: 0px 3px #d2234c;
}
.entry-content .love-button:active{
top:6px;
box-shadow: none;
}
#love-count {
background: #eee;
box-shadow: 0px 6px #ddd;
color: #666;
padding:11px 22px;
display:inline-block;
}
我非常感谢您的帮助,使其成为一个短代码,因此它使用一个短代码来部署按钮,因为我只需要在我正在开发的整个wordpress站点的1页中显示它。
SO网友:Rick Hellewell
查看add\\u shortcode函数,它可以是插件的一部分(尽管我不建议修改其他插件,因为如果他们发送更新,您的更改将被覆盖)。
因此,您可以将此函数添加到“子主题”函数中。php
function add_my_shortcode()
{
add_shortcode(\'your-shortcode-name\', \'the_function_for_your_shortcode\');
}
add_action(\'init\', \'add_my_shortcode\');
。。下面是一个函数,它接受[您的短代码名称]并输出一些文本:
function the_function_for_your_shortcode()
{
return \'here is my shortcode text\'; // Shortcode output should be returned
}
现在,每当你在帖子/页面中输入[你的短代码名称]时,它将被替换为“这是我的短代码文本”。
这是一个简单(但有些无用)的示例,但它应该可以帮助您开始。