好吧,在做了一些手脚之后,我的工作开始了。
结果是我设置了add_action
AJAX部件的挂钩不正确。
挂钩需要:
add_action( \'wp_ajax_nopriv_MYFUNCTION\', \'MYFUNCTION\' );
和
add_action( \'wp_ajax_MYFUNCTION\', \'MYFUNCTION\' );
...在我的案例和原始代码中,所讨论的函数(“MYFUNCTION”)是通过
wp_insert_post().
因此,在清理了我的namin约定和代码之后,我有以下内容:
PHP
/**
Plugin Name: Post via Ajax
*/
/* Enqueue JS
----- */
function pva_scripts() {
wp_register_script( \'pva-js\', plugin_dir_url( __FILE__ ) . \'pva.js\', array( \'jquery\' ), \'\', true );
wp_localize_script( \'pva-js\', \'pva_params\', array( \'pva_ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
wp_enqueue_script( \'pva-js\' );
};
add_action(\'wp_enqueue_scripts\', \'pva_scripts\');
// creating Ajax call for WordPress
add_action( \'wp_ajax_nopriv_pva_create\', \'pva_create\' );
add_action( \'wp_ajax_pva_create\', \'pva_create\' );
/* WP Insert Post Function
----- */
function pva_create()
{
$post_title = $_POST[\'post_title\'];
// Create post object
$new_pva_post = array(
\'post_type\' => \'page\',
\'post_title\' => $post_title,
\'post_status\' => \'publish\',
\'post_author\' => 1,
);
// Insert the post into the database
wp_insert_post( $new_pva_post );
exit();
};
/* Form Shortcode
----- */
function pva_shortcode( $atts, $content = null ) {
ob_start();
include(plugin_dir_path( __FILE__ ) . \'post_via_ajax_field.php\');
$ret = ob_get_contents();
ob_end_clean();
return $ret;
//pva();
};
add_shortcode( \'pva\', \'pva_shortcode\' );
JS公司
<小时>
jQuery( document ).ready( function ( $ ) {
$(\'#create_post\').attr(\'disabled\',true);
$(\'#post_title\').keyup(function(){
if($(this).val().length > 3) {
$(\'#create_post\').attr(\'disabled\', false);
} else {
$(\'#create_post\').attr(\'disabled\',true);
}
});
$(\'#create_post\').click(function(event){
post_via_ajax();
});
// Return Post Title Field Value
function returnNewPostTitle(){
var newPostTitleValue = $(\'#post_title\').val();
return newPostTitleValue;
}
// AJAX > Get City Posts
function post_via_ajax()
{
var pva_ajax_url = pva_params.pva_ajax_url;
$.ajax({
type: \'POST\',
url: pva_ajax_url,
data: {
action: \'pva_create\',
post_title: returnNewPostTitle()
},
beforeSend: function ()
{
console.log(\'sending\');
},
success: function(data)
{
console.log(\'yay\');
},
error: function()
{
console.log(\'nay\');
}
})
}
});
因此,将其作为插件并使用短代码[pva],您可以从前端创建帖子。显然,这只是为了非常基本,所以我想你可以根据自己的需要进行调整。希望这对某人有所帮助。:)
编辑:我还做了一个超级基础GitHub repo 使用代码。