Convert to shortcode?

时间:2017-01-11 作者:Paul Dixon

我找到了一个插件,它主要实现了我想要的功能。但希望它能被改写成一个简短的代码,只显示我想要的地方,而不是在每个帖子上。

这就是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页中显示它。

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
}
现在,每当你在帖子/页面中输入[你的短代码名称]时,它将被替换为“这是我的短代码文本”。

这是一个简单(但有些无用)的示例,但它应该可以帮助您开始。

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct