EDIT-Comments.php COMMENT_ROW_ACTIONS AJAX问题

时间:2017-05-26 作者:jdp

在编辑注释上。php页面,我正在连接到comment\\u row\\u actions过滤器,以便在末尾添加另一个链接。我正在复制“Approve”链接,添加另一个查询键和值,并修改锚文本。我想根据新查询键的值添加一些注释元。

批准的链接:

/wp-admin/comment.php?c=9999&action=approvecomment&_wpnonce=8526c66

已批准的元链接

/wp-admin/comment.php?c=9999&action=approvecomment&metalink=1&_wpnonce=8526c66

URL打印得很好,因此comment\\u row\\u actions筛选器的性能与预期一样。

因为URL调用wp_transition_comment_status() , 我想了解一下$_GET[\'metalink\'] 并在挂钩函数中设置一些注释元数据。

编辑注释。php脚本加载JS,该JS接受一些传统的锚定标记链接,并使它们成为AJAX调用,用于批准、丢弃和取消批准注释。我希望单击我的新链接来模拟AJAX对已批准链接的调用,但显然存在另一个查询变量的问题。挂钩函数正在运行,但$_GET[\'metalink\'] 变量对函数不可用,AJAX消息/行为与Approve链接行为不同。

我能说的最好的是WordPress可能出于安全原因删除了额外的查询变量,这是可以理解的。

对于在url查询字符串中传递将在AJAX环境中工作的变量,有什么建议吗?

1 个回复
SO网友:jdp

我通过使用wp-ajax环境解决了这个问题。本质上,我为comment\\u row\\u actions过滤器创建了回调函数,该过滤器创建了指向admin ajax的链接。在admin目录中使用一个查询字符串。然后,我创建了add\\u操作以在wp\\u ajax环境中运行,并重定向回引用页面。我无法通过评论找到解决方案。php。

代码如下:

function my_filter_comment_row_actions($actions, $comment) {
if ($comment->comment_approved == \'0\') {
            //build link
            $nonce = wp_create_nonce(\'mynonce\');
            $screen = get_current_screen();
            $args = array(
                \'c\' => $comment->comment_ID,
                \'action\' => \'my_ajax_action\',
                \'another_query\' => \'1\',
                \'_wpnonce\' => $nonce,
                \'refer\' => $screen->parent_file
            );
            $link = esc_url(add_query_arg($args, admin_url(\'admin-ajax.php\')));
            $actions[\'the_new_link\'] = sprintf(\'<a href="%s" style="color:green">The New Link Text</a>\', $link);
        }
        return $actions;
    }
add_filter(\'comment_row_actions\', \'my_filter_comment_row_actions\', 10, 2);
因此,有一个带有回调的过滤器来创建链接。现在谈谈“AJAX”,它实际上不是AJAX。

function my_approve_comment_with_tracking() {
        if (wp_verify_nonce($_REQUEST[\'_wpnonce\'], \'mynonce\')) {
            //do stuff
            wp_redirect(admin_url($_REQUEST[\'refer\']));
        } else wp_redirect(home_url());
        exit;
    }
    add_action(\'wp_ajax_my_ajax_action\', \'my_approve_comment_with_tracking\');
希望这对别人有帮助。

结束

相关推荐

管理员AJAX返回0而不是插入数据

我对jQuery和AJAX尤其陌生。我有一个小问题,返回值总是0,尽管我认为这实际上是成功消息,它没有返回任何内容。我已经搜索了Google verse,在PHP回调上有die()函数,我相信add\\u操作是正确的。我在一个本地主机上工作,但我怀疑这会影响它,这都是在管理中,而不是在前端。我还检查了js是否已排队并本地化。我还测试了http://codex.wordpress.org/AJAX_in_Plugins 它还返回了0,这让我怀疑它是否不是下面概述的代码。现在我只是想让它把一些东西发送回jQu