其概念是在帖子内容中放置一个按钮,用户可以单击该按钮。
两件事-应该显示帖子的ID和用户单击按钮的次数。
原因-我们将帖子呈现为产品,用户可以使用该按钮添加产品,点击按钮的次数将表示他想要的数量。
该逻辑在普通php会话中运行良好,但在使用Eric Mann的WP session Manager插件的WP\\U会话中不起作用,该插件被视为在WP中使用会话的标准方式。
工作php会话代码-Github
使用WP\\U会话,它可以成功地显示第一次单击按钮时应该显示的内容,但不会在多次单击时显示。从不
这是定制的。js文件--->
jQuery( \'.click\' ).on( \'click\', function() {
var post_id = jQuery( this ).attr( "data-id" );
var thisis = jQuery( this );
jQuery.ajax({
url: postcustom.ajax_url,
type: \'post\',
data: {
action: \'vg_show_post_id\',
post_id: post_id,
},
success: function( response ) {
jQuery( thisis.next( \'#after-ajax\' ) ).fadeIn( "slow" );
jQuery( thisis.next( \'#after-ajax\' ) ).text( "Item is added to the cart!" );
jQuery( \'#session-sidebar\' ).html( response );
jQuery( thisis.next( \'#after-ajax\' ) ).fadeOut( "slow" );
}
});
});
这是在函数中。php文件--->
<?php
/*****************************
*
* Ajax Stuff
*
********************************/
function vg_session_start() {
global $wp_session;
global $cart;
global $counter;
$wp_session = WP_Session::get_instance();
if( !empty( $cart ) ) {
$cart = $wp_session[\'wpscart\']->toArray();
}
}
add_action( \'init\', \'vg_session_start\' ); // Starting Session
function ajax_test_enqueue_scripts() {
wp_enqueue_script( \'customjs\', get_stylesheet_directory_uri() . \'/js/custom.js\', array(\'jquery\'), \'1.0\', true );
wp_localize_script( \'customjs\', \'postcustom\', array(
\'ajax_url\' => admin_url( \'admin-ajax.php\' )
));
}
add_action( \'wp_enqueue_scripts\', \'ajax_test_enqueue_scripts\' ); // Enqueueing Scripts
function vg_after_entry() {
?>
<button type="button" class="click" href="#" data-id="<?php echo get_the_ID(); ?>">Submit</button>
<div id="after-ajax">
<!-- to do post ajax stuff -->
</div>
<?php
}
add_action( genesis_entry_footer, vg_after_entry ); // Adding button in post content
function vg_show_post_id() {
global $wp_session;
global $cart;
$wp_session = WP_Session::get_instance();
$cart = $wp_session[\'wpscart\']->toArray();
$p_id = $_REQUEST[\'post_id\'];
$title = get_the_title( $p_id );
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {
if ( !empty( $cart ) && array_key_exists( $p_id, $cart ) ) {
$cnt = $cart[$p_id];
$cnt++;
$cart[$p_id] = $cnt;
} else {
$cart[$p_id] = 1;
}
foreach( $cart as $key=>$value ) {
echo "<br />" . get_the_title( $key ) . " " . $value . " units";
echo "<hr />";
}
$wp_session[\'wpscart\'] = $cart;
die();
} else {
echo "Not in admin-ajax";
}
}
add_action( \'wp_ajax_nopriv_vg_show_post_id\', \'vg_show_post_id\' ); // for ajax
add_action( \'wp_ajax_vg_show_post_id\', \'vg_show_post_id\' ); // for ajax
除此之外,每次都会出现一个主要错误-
Fatal error: Call to a member function toArray() on a non-object in /home/xxxxx/public_html/bcm/wp-content/themes/genesis-sample/functions.php on line 88
其中包含以下代码—
$cart = $wp_session[\'wpscart\']->toArray();