将do_action添加到wp_INSERT_POST的post_content

时间:2016-04-05 作者:Evergetic

我创建了一个插件,可以创建一个带有联系人表单的页面。。

我已经到了创建插件激活页面的地步,但我不知道如何给post\\u内容一个do\\u操作
这是我的创建页面功能

function ap_post_creation() {
    global $wpdb;
    $user_id = get_current_user_id();

    //$content = do_action(\'show-ap-form\');

    $args = array(
        \'post_author\' => $user_id,
        \'post_content\' => \'Hallo\',
        \'post_title\' => \'Contact\',
        \'post_status\' => \'publish\',
        \'post_type\' => \'page\',
        \'comment_status\' => \'closed\',
    );

    wp_insert_post($args);
}
这是我的add\\u action函数

<?php  
add_action(\'show-ap-form\', \'show_ap_form\');

function show_ap_form() {
    if(isset($_POST[\'submit\'])) {

    }
?>
    <form method="post">
        <input type="text" name="name" placeholder="Enter your name">
        <input type="text" name="email" placeholder="Enter your e-mail">
        <textarea name="message" placeholder="Enter your message"> </textarea>
    </form>
<?php
}
?>
如何将联系人表单附加到新创建的联系人页面?

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

@Peter van der Net,这里是我的方法,我创建shortcode 对于新创建的页面。所以,我们不必将元素表单保存到数据库中,而且如果用户需要通过快捷代码将表单移动到另一个页面,这会很容易。对于提交,我使用钩子wp 并处理表单提交的数据。对于您的问题,这是我的简单代码,您可以找到它。

function ap_post_creation() {
    $user_id = get_current_user_id();
    $args = array(
        \'post_author\'    => $user_id,
        \'post_content\'   => \'[foobar]\', //shortcode tag
        \'post_title\'     => \'Contact\',
        \'post_status\'    => \'publish\',
        \'post_type\'      => \'page\',
        \'comment_status\' => \'closed\',
    );
    wp_insert_post($args);
}

add_action( \'wp\', \'show_ap_form\' );
function show_ap_form( $wp ) {
    if ( isset( $_POST[\'submit\'] ) ) {
        //run your stuff here don\'t forget to sanitize
    }
}

add_shortcode( \'foobar\', \'ap_shortcode_form\' );
function ap_shortcode_form( $atts ) {
    ob_start();
?>
    <form method="post">
        <input type="text" name="name" placeholder="Enter your name">
        <input type="text" name="email" placeholder="Enter your e-mail">
        <textarea name="message" placeholder="Enter your message"> </textarea>
        <button name="submit"><?php _e( \'Submit\' ) ?></button>
    </form>
<?php
    $html_form = ob_get_clean();
    return $html_form;
}