快捷代码-我需要抛出一条消息或加载一个不同的页面

时间:2013-10-11 作者:Mario.Hydrant

我正在使用快捷码在公共端显示一个表单。快捷码包含在Post add\\U new中,位于http://localhost/wordpress/add_new/. 成功保存表单数据后,我需要页面1)更改页面位置并显示成功完成消息,或在add\\u new页面上显示成功完成消息。

这是我的短代码:

add_shortcode( \'show_INT_form\', function() {
    $int_class = new int_class;

    if ( isset( $_REQUEST[\'int_prefix\'] ) && isset( $_REQUEST[\'int_suffix\'] ) ) { 
        // ???? Area X
        // What do I do here?
        // ????
    }
    else {
        $ret = $int_class->public_form(); // function that loads the form onto the page
    }

    return $ret;
} );
如何让add\\u new page加载其他页面?

我看到示例代码只是在重复<meta http-equiv=\'refresh\' content=\'0;url=page_to_load\' /> 在里面Area X 位于上述代码的注释中。我已经试过了,效果不错,但这是正确的程序吗?

我没有尝试过其他方法,因为我不知道如何处理函数和类范围。如何调用新的事件侦听器(例如add_action( \'send_headers\' ) ) 在我的add\\u shortcode函数之外,并向其传递一个参数,例如“success”或“error”消息?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

将表单处理代码移到shortcode之外,以便在发送标头之前将其挂接到早期的操作,然后可以在处理表单后执行所需的任何重定向。

function process_int_form(){
    if ( isset( $_REQUEST[\'int_prefix\'] ) && isset( $_REQUEST[\'int_suffix\'] ) ) {
        // process form
        wp_redirect( home_url( $_SERVER[\'REQUEST_URI\'] ) );
    }
}
add_action( \'init\', \'process_int_form\' );

结束

相关推荐

Custom field within shortcode

我目前正在使用“WP Simple Paypal Shopping Cart”插件建立一个简单的Paypal电子商务网站,它非常容易使用,但为了节省客户编写短代码的时间,我在后端设置了自定义字段以输入产品名称和价格TheAdd to Cart 按钮是使用一段简单的短代码生成的,如下所示:<?php echo print_wp_cart_button_for_product(\'Product Name\', Product Price); ?> 显然正在替换Product Name