Sto scrivendo un plugin per inviare un invito a un amico che apre un modulo quando si fa clic su un collegamento. Ho incapsulato tutte le funzioni in classe seguendo il codice fornito nel plug-in Report Broken Video di @toscho. Il codice pertinente è di seguito:
/*
Plugin Name: Send Invitation
Plugin URI: http://w3boutique.net
Description: Emails a the link of the current page to a friend
Author: Nandakumar Chandrasekhar
Version: 0.1
Author URI: http://w3boutique.net/about-nanda.html
License: GPL2
*/
// include() or require() any necessary files here
// Settings and/or Configuration Details go here
define('SEND_INVITATION_MIN_WORDPRESS_VERSION', '3.1.1');
define('SEND_INVITATION_PLUGIN_URL', plugins_url('', __FILE__));
add_action( 'init', array( 'SendInvitation', 'nc_sendinvitation_init' ) );
class SendInvitation {
protected $nonce_name = 'nc_sendinvitation';
protected $post_url = '';
public static function nc_sendinvitation_init() {
new self;
}
public function __construct() {
add_action( 'init', array(&$this, 'nc_sendinvitation_head' ));
add_action( 'init', array(&$this, 'nc_sendinvitation_check_wordpress_version' ));
add_action( 'init', array(&$this, 'nc_sendinvitation_form_action' ));
//$this->post_url = $this->nc_sendinvitation_get_post_url();
}
public function nc_sendinvitation_head() {
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'send_invitation_js',
plugins_url( 'js/send-invitation.js', __FILE__ ),
array( 'jquery' ) );
wp_enqueue_style( 'send_invitation_css',
plugins_url( 'css/send-invitation.css', __FILE__ ) );
}
public function nc_sendinvitation_check_wordpress_version() {
global $wp_version;
$exit_msg = 'Send Invitation requires version '
. SEND_INVITATION_MIN_WORDPRESS_VERSION
. 'or newer <a href="http://codex.wordpress.org/Upgrading_WordPress">Please
update!</a>';
if ( version_compare( $wp_version, SEND_INVITATION_MIN_WORDPRESS_VERSION, '<') )
{
exit( $exit_msg );
}
}
public function nc_sendinvitation_form_action() {
$action = '';
if ( $_SERVER['REQUEST_METHOD'] != 'POST' )
{
$action = $this->nc_sendinvitation_get_form();
}
else if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$action = $this->nc_sendinvitation_handle_submit();
}
return $action;
}
public function nc_sendinvitation_get_form() {
// Start the output buffer, prevents content being output directly into
// script, instead it is stored in a buffer which can then be flushed
// to allow the include file to be stored in a variable
// See http://www.codingforums.com/showthread.php?t=124537
ob_start();
include('send-invitation-form.php');
$send_invitation_link = ob_get_clean();
return $send_invitation_link;
}
public function nc_sendinvitation_handle_submit() {
if ( isset( $_POST['form_type'] ) && ( $_POST['form_type'] == 'nc_sendinvitation' ) ) {
$to = 'navanitachora@gamil.com';
$subject = 'Invitation to SwanLotus';
$message = 'Navanitachora invites you to take a look at this link';
wp_mail($to, $subject, $message);
$result = 'Email was sent successfully';
}
else {
$result = $this->nc_sendinvitation_get_form();
}
return $result;
}
public function nc_sendinvitation_get_post_url() {
global $post;
$blog_id = get_option('page_for_posts');
$post_id = '';
if (is_home($blog_id)) {
$post_id = $blog_id;
} else {
$post_id = $post->ID;
}
return get_permalink($post_id);
}
}
/* End of File */
?>
Sono in perdita su come utilizzare questa classe nel mio modello in modo da poter visualizzare il modulo. So che devo creare un'istanza della classe ma non sono sicuro di dove inserire il codice e come accedere all'oggetto in modo da poterlo utilizzare nel mio modello. Conosco OOP ma non l'ho mai usato prima in questo contesto e ho bisogno di istruzioni passo per passo.
Grazie molto.
plugin_action_demo
inadd_action()
? Come fa ado_action( 'print_foo', 50 );
sapere che l'azione èplugin_action_demo
o è quel nome irrilevante?