我目前正在开发一个插件,它可以在每次发布帖子时将WP帖子发送给用户指定的REST API。
问题:我不想发送所有帖子,我希望用户选择是否发送(默认:不发送)。
因此,我的插件PHP文件如下所示(摘录):
function post_published_api_call( $ID, $post) {
$url = get_option(\'api_url\', array(\'plugin_text_string\' => DEFAULT_API_URL))[\'plugin_text_string\'];
$title = $post->post_title;
$content = wp_post_to_html($post->post_content);
$post_data = array(
\'status\' => \'publish\',
\'title\' => $title,
\'content\' => $content
);
$json_post = json_encode($post_data);
$data = wp_remote_post($url, array(
\'headers\' => array(\'Content-Type\' => \'application/json; charset=utf-8\'),
\'body\' => $json_post,
\'method\' => \'POST\'
));
}
add_action( \'publish_post\', \'post_published_api_call\', 10, 2);
wp_remote_post
(或更好:整体
post_published_api_call
功能)应仅在按下/激活TinyMCE中的自定义按钮时启动。
我的自定义TinyMCE编辑器按钮(pb\\u Button.js):
(function() {
tinymce.create(\'tinymce.plugins.pboerse\', {
init : function(ed, url) {
var state;
ed.addButton(\'pb_button1\', {
text : \'PB\',
title : \'Publish on Projektboerse?\',
cmd : \'pb_button1\',
onclick: function () {
},
onpostrender: function() {
var btn = this;
ed.on(\'pb_button1\', function(e) {
btn.active(e.state);
});
}
});
ed.addCommand(\'pb_button1\', function() {
state = !state; /* Switching state */
ed.fire(\'pb_button1\', {state: state});
if (state){
/* Button active */
var request = new XMLHttpRequest();
request.open(\'POST\', \'projektboerse.php\', true);
request.setRequestHeader(\'Content-Type\', \'application/x-www-form-urlencoded\');
request.send(\'mydata=\'+state);
}
else {
/* Button inactive */
}
});
}
});
// Register plugin
tinymce.PluginManager.add( \'pboerse\', tinymce.plugins.pboerse );
})();
我知道在服务器端语言(如PHP)和客户端语言(如JavaScript)之间交换状态/变量的困难。
我在google上搜索了很多关于AJAX的内容,但仍然存在一个问题:我可以通过以下代码获得按钮状态
foo = isset($_POST[\'mydata\']);
if (isset($_POST[\'mydata\'])){
$GLOBALS[\'foo\'] = $_POST[\'mydata\'];
echo $foo;
wp_die();
}
但是按钮状态只存在于if语句中,因为我猜插件的其余部分仍然获得了初始默认值(这是一个空字符串)。
我试着在post_published_api_call
函数,但此时$\\u POST变量似乎被wordpress覆盖,等等$_POST[\'mydata\']
结果为空字符串。
如何检查post_published_api_call
作用有可能吗?
提前感谢!