For my ajax popup login i want to use Output Buffer for a whole oop php class. I just want to start buffering from the start of class and end it when the class is finished.
class Wp_Ajax_Popup_Login {
public function __construct() {
// Output Buffering for whole class
ob_start();
add_action( 'after_switch_theme', array( $this, 'theme_activation' ) );
add_action( 'switch_theme', array( $this, 'theme_deactivation' ) );
add_action( 'init', array( $this, 'start_session' ), 1 );
add_action( 'wp_login', array( $this, 'end_session' ) );
add_action( 'wp_logout', array( $this, 'end_session' ) );
if( is_admin() ) {
add_action( 'admin_menu', array( $this, 'custom_theme_option_menu' ) );
}
add_action( 'wp_enqueue_scripts', array( $this, 'theme_login_enqueue_script' ) );
add_action( 'init', array( $this, 'ajax_login_modal_init' ) );
add_shortcode( 'Bootstrap_Register_login', array( $this, 'theme_login_shortcode' ) );
}
public function __destruct() {
// Is it will work for the whole class buffer cleanup?
ob_end_clean();
}
public static function theme_activation() {}
public function theme_deactivation() {}
// Other functions will write here
}
new Wp_Ajax_Popup_Login();
End buffering at _destruct() magic method. Isn't it right way to start buffering at the beginning of class and end when class end. What is the right way use buffer for the whole php class?
EDIT
Take a look and say where should i use ob_start() and ob_end_clean() for my ajax popupbox
// restrict direct access of theme files
if ( ! defined( 'ABSPATH' ) )
class Wp_Ajax_Popup_Login {
public function __construct() {
add_action( 'wp_enqueue_scripts', array( $this, 'theme_login_enqueue_script' ) );
add_action( 'init', array( $this, 'ajax_login_modal_init' ) );
add_shortcode( 'Bootstrap_Register_login', array( $this, 'theme_login_shortcode' ) );
// Other necessary hooks will write here
}
public function theme_login_enqueue_script() {
if (get_option( 'bootstrap_support_required' ) == 1){
wp_enqueue_style( 'bootstrap-bs3patch', get_parent_theme_file_uri( 'admin/assets/css/bootstrap-modal-bs3patch.css' ) );
}
//bootModal style
wp_enqueue_style( 'bootstrap-modal', get_parent_theme_file_uri('admin/assets/css/bootstrap-modal.css') );
// jquery
wp_enqueue_script('jquery');
//bootmodal script
wp_enqueue_script(
'bootstrap-modal',
get_parent_theme_file_uri( 'admin/assets/js/bootstrap-modal.js' ),
false,'',true
);
}
public function ajax_login_modal_init() {
if ( ! is_admin() || is_customize_preview() ) {
wp_register_script( 'ajax-login-script', get_parent_theme_file_uri( 'admin/assets/js/scripts.js' ), array( 'jquery' ) );
wp_enqueue_script( 'ajax-login-script' );
}
wp_localize_script( 'ajax-login-script', 'ajax_login_object', array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'login_nonce_token' => wp_create_nonce( 'login_nonce' ),
'register_nonce_token' => wp_create_nonce( 'register_nonce' ),
'lostpassword_nonce_token' => wp_create_nonce( 'lostpassword_nonce' ),
'loginRedirectURL' => (get_option( 'login_modal_redirect' ) == '') ? '' : get_option( 'login_modal_redirect' ),
'registerRedirectURL' => (get_option( 'register_modal_redirect' ) == '') ? '' : get_option( 'register_modal_redirect' )
) );
add_action( 'wp_ajax_nopriv_ajaxlogin', array( $this, 'ajax_login_jquery_callable' ) );
// add_action( 'wp_ajax_nopriv_ajaxregister', array( $this, 'ajax_register_jquery_callable' ) );
// add_action( 'wp_ajax_nopriv_ajaxlostpassword', array( $this, 'ajax_lost_password_jquery_callable' ) );
}
public function theme_login_shortcode() {
// html forms
add_action( 'wp_footer', array( $this, 'popup_bootmodal_form' ) );
if ( ! is_user_logged_in() ) {
return '<button type="button" class="btn ' . $this->default_buttons() . ' ' . $this->theme_button_block() . ' ' . $this->theme_button_size() . '" data-toggle="modal" data-target="#bootmodal">' . $this->login_button_text() . '</button>';
} else {
if ( get_option( 'login_modals_profile' ) != 1 ) {
return '<button type="button" class="btn ' . $this->default_buttons() . ' ' . $this->theme_button_block() . ' ' . $this->theme_button_size() . '" data-toggle="modal" data-target="#bootmodal">' . $this->login_button_text() . '</button>';
} else {
return '<button type="button" class="btn ' . $this->default_buttons() . ' ' . $this->theme_button_block() . ' ' . $this->theme_button_size() . ' disabled" disabled="disabled">' . $this->login_button_text() . '</button>';
}
}
}
// call it inside theme_login_shortcode() function
public function popup_bootmodal_form() {
if ( ! is_user_logged_in() ) :
?>
<div id="bootmodal" class="modal fade" tabindex="-1" data-width="370" data-backdrop="static" data-keyboard="false" style="display: none;">
<div class="tab-content">
<div class="tab-pane active fade in" id="login_tab">
<?php include_once 'templates/login-form.php'; ?>
</div>
<?php if (get_option( 'users_can_register' ) == true): ?>
<div class="tab-pane fade in" id="register_tab">
<?php include_once 'templates/register-form.php'; ?>
</div>
<?php endif; ?>
<div class="tab-pane fade in" id="lostpass_tab">
<?php include_once 'templates/password-lost-form.php'; ?>
</div>
</div><!-- #tab-content -->
</div><!-- #bootmodal -->
<?php
endif;
}
// Other functions will write here
}
new Wp_Ajax_Popup_Login();
I think, this time i give you all the code you need to understand that where should i use ob_start() and ob_end_clean().
Thanks.
.
For my ajax popup login i want to use Output Buffer for a whole oop php class. I just want to start buffering from the start of class and end it when the class is finished.
class Wp_Ajax_Popup_Login {
public function __construct() {
// Output Buffering for whole class
ob_start();
add_action( 'after_switch_theme', array( $this, 'theme_activation' ) );
add_action( 'switch_theme', array( $this, 'theme_deactivation' ) );
add_action( 'init', array( $this, 'start_session' ), 1 );
add_action( 'wp_login', array( $this, 'end_session' ) );
add_action( 'wp_logout', array( $this, 'end_session' ) );
if( is_admin() ) {
add_action( 'admin_menu', array( $this, 'custom_theme_option_menu' ) );
}
add_action( 'wp_enqueue_scripts', array( $this, 'theme_login_enqueue_script' ) );
add_action( 'init', array( $this, 'ajax_login_modal_init' ) );
add_shortcode( 'Bootstrap_Register_login', array( $this, 'theme_login_shortcode' ) );
}
public function __destruct() {
// Is it will work for the whole class buffer cleanup?
ob_end_clean();
}
public static function theme_activation() {}
public function theme_deactivation() {}
// Other functions will write here
}
new Wp_Ajax_Popup_Login();
End buffering at _destruct() magic method. Isn't it right way to start buffering at the beginning of class and end when class end. What is the right way use buffer for the whole php class?
EDIT
Take a look and say where should i use ob_start() and ob_end_clean() for my ajax popupbox
// restrict direct access of theme files
if ( ! defined( 'ABSPATH' ) )
class Wp_Ajax_Popup_Login {
public function __construct() {
add_action( 'wp_enqueue_scripts', array( $this, 'theme_login_enqueue_script' ) );
add_action( 'init', array( $this, 'ajax_login_modal_init' ) );
add_shortcode( 'Bootstrap_Register_login', array( $this, 'theme_login_shortcode' ) );
// Other necessary hooks will write here
}
public function theme_login_enqueue_script() {
if (get_option( 'bootstrap_support_required' ) == 1){
wp_enqueue_style( 'bootstrap-bs3patch', get_parent_theme_file_uri( 'admin/assets/css/bootstrap-modal-bs3patch.css' ) );
}
//bootModal style
wp_enqueue_style( 'bootstrap-modal', get_parent_theme_file_uri('admin/assets/css/bootstrap-modal.css') );
// jquery
wp_enqueue_script('jquery');
//bootmodal script
wp_enqueue_script(
'bootstrap-modal',
get_parent_theme_file_uri( 'admin/assets/js/bootstrap-modal.js' ),
false,'',true
);
}
public function ajax_login_modal_init() {
if ( ! is_admin() || is_customize_preview() ) {
wp_register_script( 'ajax-login-script', get_parent_theme_file_uri( 'admin/assets/js/scripts.js' ), array( 'jquery' ) );
wp_enqueue_script( 'ajax-login-script' );
}
wp_localize_script( 'ajax-login-script', 'ajax_login_object', array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'login_nonce_token' => wp_create_nonce( 'login_nonce' ),
'register_nonce_token' => wp_create_nonce( 'register_nonce' ),
'lostpassword_nonce_token' => wp_create_nonce( 'lostpassword_nonce' ),
'loginRedirectURL' => (get_option( 'login_modal_redirect' ) == '') ? '' : get_option( 'login_modal_redirect' ),
'registerRedirectURL' => (get_option( 'register_modal_redirect' ) == '') ? '' : get_option( 'register_modal_redirect' )
) );
add_action( 'wp_ajax_nopriv_ajaxlogin', array( $this, 'ajax_login_jquery_callable' ) );
// add_action( 'wp_ajax_nopriv_ajaxregister', array( $this, 'ajax_register_jquery_callable' ) );
// add_action( 'wp_ajax_nopriv_ajaxlostpassword', array( $this, 'ajax_lost_password_jquery_callable' ) );
}
public function theme_login_shortcode() {
// html forms
add_action( 'wp_footer', array( $this, 'popup_bootmodal_form' ) );
if ( ! is_user_logged_in() ) {
return '<button type="button" class="btn ' . $this->default_buttons() . ' ' . $this->theme_button_block() . ' ' . $this->theme_button_size() . '" data-toggle="modal" data-target="#bootmodal">' . $this->login_button_text() . '</button>';
} else {
if ( get_option( 'login_modals_profile' ) != 1 ) {
return '<button type="button" class="btn ' . $this->default_buttons() . ' ' . $this->theme_button_block() . ' ' . $this->theme_button_size() . '" data-toggle="modal" data-target="#bootmodal">' . $this->login_button_text() . '</button>';
} else {
return '<button type="button" class="btn ' . $this->default_buttons() . ' ' . $this->theme_button_block() . ' ' . $this->theme_button_size() . ' disabled" disabled="disabled">' . $this->login_button_text() . '</button>';
}
}
}
// call it inside theme_login_shortcode() function
public function popup_bootmodal_form() {
if ( ! is_user_logged_in() ) :
?>
<div id="bootmodal" class="modal fade" tabindex="-1" data-width="370" data-backdrop="static" data-keyboard="false" style="display: none;">
<div class="tab-content">
<div class="tab-pane active fade in" id="login_tab">
<?php include_once 'templates/login-form.php'; ?>
</div>
<?php if (get_option( 'users_can_register' ) == true): ?>
<div class="tab-pane fade in" id="register_tab">
<?php include_once 'templates/register-form.php'; ?>
</div>
<?php endif; ?>
<div class="tab-pane fade in" id="lostpass_tab">
<?php include_once 'templates/password-lost-form.php'; ?>
</div>
</div><!-- #tab-content -->
</div><!-- #bootmodal -->
<?php
endif;
}
// Other functions will write here
}
new Wp_Ajax_Popup_Login();
I think, this time i give you all the code you need to understand that where should i use ob_start() and ob_end_clean().
Thanks.
.
Share Improve this question edited Jun 18, 2019 at 12:55 Zahid Hossain asked Jun 18, 2019 at 7:21 Zahid HossainZahid Hossain 71 silver badge4 bronze badges 6 | Show 1 more comment1 Answer
Reset to default 0Your code does not need to use output buffering anywhere. There's nowhere that you need it.
Your shortcode function is already properly using return
for the output output, so nothing needs to be captured, and your popup_bootmodal_form()
function is outputting in wp_footer
, which is fine, and doesn't need to be captured either.
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745391487a4625680.html
add_action()
doesn't even produce any output, so there's no reason to buffer it. – Jacob Peattie Commented Jun 18, 2019 at 7:43