Wordpress:如何通过插件中的自定义帖子类型函数调用函数?

时间:2015-06-05 09:29:20

标签: jquery wordpress

我制作了一个插件,我在其中创建了一个简单的联系表单。我在我的插件中添加了自定义帖子类型功能。我想要做的是当有人点击Add New按钮时,它应该打开一个表单。我想只在后端做这件事。 这是我的代码: 在插件main.php文件backup.php

中联系表单函数
function contact()
{
    echo '<form action="' . esc_url( $_SERVER['REQUEST_URI'] ) . '" method="post">';
    echo '<p>';
    echo 'Your Name (required) <br/>';
    echo '<input type="text" name="cf-name" pattern="[a-zA-Z0-9 ]+" value="' . ( isset( $_POST["cf-name"] ) ? esc_attr( $_POST["cf-name"] ) : '' ) . '" size="40" />';
    echo '</p>';
    echo '<p>';
    echo 'Your Email (required) <br/>';
    echo '<input type="email" name="cf-email" value="' . ( isset( $_POST["cf-email"] ) ? esc_attr( $_POST["cf-email"] ) : '' ) . '" size="40" />';
    echo '</p>';
    echo '<p>';
    echo 'Subject <br/>';
    echo '<input type="text" name="cf-subject" pattern="[a-zA-Z ]+" value="' . ( isset( $_POST["cf-subject"] ) ? esc_attr( $_POST["cf-subject"] ) : '' ) . '" size="40" />';
    echo '</p>';
    echo '<p>';
    echo 'Your Message <br/>';
    echo '<textarea rows="10" cols="35" name="cf-message">' . ( isset( $_POST["cf-message"] ) ? esc_attr( $_POST["cf-message"] ) : '' ) . '</textarea>';
    echo '</p>';
    echo '<p><input type="submit" name="cf-submitted" value="Send"></p>';
    echo '</form>';
    }

这些是我在同一页面中的自定义类型函数backup.php我想调用上面的函数,即函数contact()

function register_backup() {

    $labels = array(
        'name' => _x( 'Backup', 'backup' ),
        'add_new' => _x( 'Add New', 'contact()' ),
        );
        $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,
        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => true,
        'capability_type' => 'post'
    );

    register_post_type( 'backup', $args );
}

add_action( 'init', 'register_backup' );

// Function used to automatically create Music Reviews page.
function backup_plugin()
  {
   //post status and options
    $post = array(
          'comment_status' => 'open',
          'ping_status' =>  'closed' ,
          'post_date' => date('Y-m-d H:i:s'),
          'post_name' => 'backup',
          'post_status' => 'publish' ,
          'post_title' => 'Backup',
          'post_type' => 'page',
    );
    //insert page and save the id
    $newvalue = wp_insert_post( $post, false );
    //save the id in the database
    update_option( 'mrpage', $newvalue );
  }

  // // Activates function if plugin is activated
register_activation_hook( __FILE__, 'backup_plugin');

1 个答案:

答案 0 :(得分:1)

你必须用jQuery覆盖“Add New”按钮,除非有人知道一个好的过滤器可以挂钩。 [注意此方法将在已翻译的管理区域中中断]。然后,您必须将表单放入管理菜单:

http://codex.wordpress.org/Administration_Menus