我已经安装了你的插件,但它不工作。
进纸计数器已正确更新,但未显示进纸(因此没有“按下此”按钮)。
之后,当我安装它时,我看到了几个注意事项:您是否正在测试您的插件,并且wp调试处于活动状态?
对我来说,最好的方法是将用户重定向到标准的wordpress帖子创建页面。但是如何预先填充它呢?
在快速查看您的代码之后,我将为您提供一个解决方案的框架,该解决方案应该根据您的插件进行改进和定制。
当然还有更优雅的方式,但我首先想到的是:
创建并保存包含所选提要内容的帖子,并将状态设置为自动草稿
重定向用户以编辑刚创建的帖子的页面,如:Javascript:在文件js/myblogthis中。js\'
jQuery().ready(function($) {
$(\'.entry-tools a\').click(function(e) {
e.preventDefault();
var $entry = $(this).closest(\'.entry\');
var $titleObj = $entry.find(\'.entry-title\');
var _title = $titleObj.text();
var _url = $titleObj.parent().attr(\'href\');
var _by = $entry.find(\'.author\').text();
var _date = $entry.find(\'.date\').text();
var _content= $entry.find(\'.entry-content\').html();
$.ajax({
url: ajaxurl, type: \'POST\', dataType: \'json\',
data: {
title: _title, url: _url, by: _by, date: _date, content: _content,
action: \'blog_this\', nonce: myblogthisData.nonce
}
}).done(
function( data ) {
if ( data && data.url ) { window.location.href = data.url
} else { alert( "Error!" ); }
}
);
});
});
PHP
add_action(\'admin_enqueue_scripts\', \'enqueue_blog_this_js\');
add_action(\'wp_ajax_blog_this\', \'my_blog_this\');
function enqueue_blog_this_js($page) {
if ( $page != \'toplevel_page_orbital\' ) return;
wp_enqueue_script(\'myblogthis\', plugins_url(\'js/myblogthis.js\', __FILE__), array(), null );
$data = array( \'nonce\' => wp_create_nonce(\'myblogthis\') );
wp_localize_script(\'myblogthis\', \'myblogthisData\', $data);
}
function my_blog_this() {
error_reporting(0);
if ( ! isset($_POST[\'nonce\']) || ! wp_verify_nonce($_POST[\'nonce\'], \'myblogthis\') )
wp_send_json( array(\'error\' => \'Security Fail\') );
$title = isset($_POST[\'title\']) ? $_POST[\'title\'] : \'\';
$url = isset($_POST[\'url\']) ? $_POST[\'url\'] : \'\';
$by = isset($_POST[\'by\']) ? $_POST[\'by\'] : \'\';
$date = isset($_POST[\'date\']) ? $_POST[\'date\'] : \'\';
$content = isset($_POST[\'content\']) ? $_POST[\'content\'] : \'\';
if ( $title && $url && $by && $date) {
$content .= sprintf(
\'<p>Originally posted by: %s on %s (see: <a href="%s">%s</a>)</p>\',
esc_html($by), esc_html($date), esc_url($url), esc_html($title)
);
}
$args = array(
\'post_status\' => \'auto-draft\',
\'post_title\' => \'\',
\'post_author\' => wp_get_current_user()->ID,
\'post_content\' => $content
);
$id = wp_insert_post($args);
if ( $id ) {
$url = add_query_arg( array(\'action\'=> \'edit\', \'post\'=> $id), admin_url(\'post.php\') );
wp_send_json( array(\'url\'=> $url ) );
}
wp_send_json( array(\'error\' => \'Saving Post Error\') );
}
如您所见,我尝试根据“mainwindow”输出的html创建js。php’。你使用的方法和我的方法之间的主要区别是,你让用户选择一个文本来重新写博客,而我使用整个内容。但通过一些js改进,您可能可以修改这种行为。