我应该在哪里编写WordPress AJAX投票的代码?

时间:2018-06-26 作者:Nilabhra Chakraborty

我是wordpress主题开发的新手。谁能告诉我应该在哪里实现ajax功能的代码(比如说帖子投票系统)?我应该把它写在一个单独的插件上,还是作为函数中的自定义代码。php请解释您的原因,谢谢。

1 个回复
SO网友:Tom J Nowell

改用REST API端点!

让我们在以下位置注册端点:/wp-json/tomjn/v1/test, 这需要tomjn_rest_test() 当你击中它时:

add_action( \'rest_api_init\', function () {
        register_rest_route( \'tomjn/v1\', \'/test/\', array(
                \'methods\' => \'GET\',
                \'callback\' => \'tomjn_rest_test\'
        ) );
} );
现在,让我们添加tomjn_rest_test 功能:

function tomjn_rest_test( $request ) {
        return "moomins";
}
现在当我们访问tomjn时。com/wp-json/tomjn/v1/test我们得到:

enter image description here

现在我们可以在前端抓住它:

<script>
jQuery.ajax({
    url: <?php echo wp_json_encode( esc_url_raw( rest_url( \'tomjn/v1/test\' ) ) ); ?>
}).done(function( data ) {
    // do something
    jQuery( \'#tomsword\' ).text( data );
});
</script>
该代码查找<div id="tomsword"> 并将内容设置为端点返回的内容。

但是我应该把代码放在哪里呢?主题还是插件

您可以在插件或主题中注册端点,请记住:

主题决定网站的外观插件决定网站的功能

Voting sounds like functionality, not decoration, and should go in a plugin.

如果你把它放在一个主题中,那么这个功能将永远被困在这个主题中,除非开发人员手动提取它。一旦用户更改主题,任何投票数据都将不可用

结束

相关推荐

AJAX响应返回html代码而不是用户数据

好的,所以我遇到了一个问题,我禁用了对特定用户角色的默认WP仪表板的访问;但是,这也会禁止对ajax管理员的ajax调用。php端点,这是我尝试做的事情所必需的。如果有人知道这个特定场景的一个有用的解决方法,而不需要完全重新设计,我将不胜感激,因为我没有看到关于这个特定问题的任何信息。提前感谢您!