양식을 사용한 프런트 엔드 포스트 편집
3 대답
- 투표
-
- 2011-02-21
기존 게시물을 수정하려면 프런트 엔드 편집기 플러그인을 사용해보세요.
새 게시물을 작성하려면 다음 중 하나를 시도하십시오.
If you want to edit an existing post, try my Front-end Editor plugin.
If you want to create new posts, try one of these:
-
감사합니다 Scribu.귀하의 플러그인은 환상적이지만 내 필요에 맞지 않습니다.양식으로 기존 게시물을 편집하려고합니다.프론트 엔드에있는 양식을 사용하여 사용자 프로필을 편집하는 것과 비슷한 질문을했고 다음 응답을 받았습니다. http://wordpress.stackexchange.com/questions/9775/how-to-edit-a-user-profile-on-the-front-end 이것은 나를 위해 완벽하게 작동했습니다.게시물 편집에 대한 유사한 솔루션이 있다면 정말 감사하겠습니다.Thanks Scribu. Your plugin is fantastic, but it does not fit my need. I am trying to edit an existing post with a form. I asked a similar question about editing a user's profile with a form in the frontend and I received this response: http://wordpress.stackexchange.com/questions/9775/how-to-edit-a-user-profile-on-the-front-end This worked perfectly for me. If there is a similar solution for editing posts I would be so grateful.
- 0
- 2011-02-21
- Carson
-
그것과 함께 메타 박스를 추가 할 수 있습니까??is it possible to add metaboxes along with it??
- 0
- 2011-06-17
- nickfrancis.me
-
@nickfancis.me는 이런 종류의 일에 주석을 사용합니다-그것이 그들이 거기에있는 이유입니다!@nickfancis.me use comments for this sort of thing - that's what they're there for!
- 0
- 2011-06-17
- TheDeadMedic
-
@nickfrancis.me 메타 박스는 백엔드 전용입니다.어쩌면 당신은 위젯을 의미합니까?@nickfrancis.me Metaboxes are strictly for the backend. Maybe you mean widgets?
- 0
- 2011-06-17
- scribu
-
- 2013-07-15
다음은 게시물/페이지를 업데이트하기위한 기본 솔루션입니다. 사용자 지정 메타 필드의 간단한 데모를 추가했습니다. 이것은 매우 기본적이지만 프런트 엔드에서 플러그인없이 게시물을 편집하는 방향을 알려줄 것입니다. 매우 유연하지는 않지만 필요한 것은 무엇이든 추가 할 수 있습니다.
루프에 다음 코드 추가 :
<form id="post" class="post-edit front-end-form" method="post" enctype="multipart/form-data"> <input type="hidden" name="post_id" value="<?php the_ID(); ?>" /> <?php wp_nonce_field( 'update_post_'. get_the_ID(), 'update_post_nonce' ); ?> <p><label for="post_title">Title</label> <input type="text" id="post_title" name="post_title" value="<?php echo $post->post_title; ?>" /></p> <p><?php wp_editor( $post->post_content, 'postcontent' ); ?></p> <p><label for="post_title">Test</label> <?php $value = get_post_meta(get_the_ID(), 'edit_test', true); ?> <input type="text" id="edit_test" name="edit_test" value="<?php echo $value; ?>" /></p> <p><label for="post_title">Test 2</label> <?php $value = get_post_meta(get_the_ID(), 'edit_test2', true); ?> <input type="text" id="edit_test2" name="edit_test2" value="<?php echo $value; ?>" /></p> <input type="submit" id="submit" value="Update" /> </form>
그런 다음 페이지 상단에 다음 코드를 추가하여 양식을 처리하세요.
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent']) ) { $post_id = $_POST['post_id']; $post_type = get_post_type($post_id); $capability = ( 'page' == $post_type ) ? 'edit_page' : 'edit_post'; if ( current_user_can($capability, $post_id) && wp_verify_nonce( $_POST['update_post_nonce'], 'update_post_'. $post_id ) ) { $post = array( 'ID' => esc_sql($post_id), 'post_content' => esc_sql($_POST['postcontent']), 'post_title' => esc_sql($_POST['post_title']) ); wp_update_post($post); if ( isset($_POST['edit_test']) ) update_post_meta($post_id, 'edit_test', esc_sql($_POST['edit_test']) ); if ( isset($_POST['edit_test2']) ) update_post_meta($post_id, 'edit_test2', esc_sql($_POST['edit_test2']) ); } else { wp_die("You can't do that"); } }
Here is a basic solutions for updating a post/page. I added a quick demo of custom meta fields. This is pretty basic, but will point you in the direction of plugin-less editing of posts on the front-end. This isn't super flexible, but you can add whatever you need to it.
Add this code into your loop:
<form id="post" class="post-edit front-end-form" method="post" enctype="multipart/form-data"> <input type="hidden" name="post_id" value="<?php the_ID(); ?>" /> <?php wp_nonce_field( 'update_post_'. get_the_ID(), 'update_post_nonce' ); ?> <p><label for="post_title">Title</label> <input type="text" id="post_title" name="post_title" value="<?php echo $post->post_title; ?>" /></p> <p><?php wp_editor( $post->post_content, 'postcontent' ); ?></p> <p><label for="post_title">Test</label> <?php $value = get_post_meta(get_the_ID(), 'edit_test', true); ?> <input type="text" id="edit_test" name="edit_test" value="<?php echo $value; ?>" /></p> <p><label for="post_title">Test 2</label> <?php $value = get_post_meta(get_the_ID(), 'edit_test2', true); ?> <input type="text" id="edit_test2" name="edit_test2" value="<?php echo $value; ?>" /></p> <input type="submit" id="submit" value="Update" /> </form>
Then add this code at the top of the page to process the form:
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent']) ) { $post_id = $_POST['post_id']; $post_type = get_post_type($post_id); $capability = ( 'page' == $post_type ) ? 'edit_page' : 'edit_post'; if ( current_user_can($capability, $post_id) && wp_verify_nonce( $_POST['update_post_nonce'], 'update_post_'. $post_id ) ) { $post = array( 'ID' => esc_sql($post_id), 'post_content' => esc_sql($_POST['postcontent']), 'post_title' => esc_sql($_POST['post_title']) ); wp_update_post($post); if ( isset($_POST['edit_test']) ) update_post_meta($post_id, 'edit_test', esc_sql($_POST['edit_test']) ); if ( isset($_POST['edit_test2']) ) update_post_meta($post_id, 'edit_test2', esc_sql($_POST['edit_test2']) ); } else { wp_die("You can't do that"); } }
-
esc_sql ()을 추가했습니다.그런 공개 (반 공개) 형식에서 제출되는 데이터를 피해야한다는 생각이 들었습니다.I added esc_sql(). It just occurred to me that you should escape data being submitted from a public (semi-public) form like that.
- 0
- 2013-07-16
- Jake
-
감사합니다.하지만 내 양식은 관리자 만 사용할 수 있습니다.어쨌든이 양식을 공개 게시에 사용하면 도움이 될 것입니다.Thanks, But my form is only available for Admin. Anyway it will be helpful if ever I use this form for public posting.
- 1
- 2013-07-17
- user1983017
-
- 2013-07-14
가장 쉬운 방법은 Ninja Forms와 같은 유료 확장 프로그램을 사용하는 것입니다.
http://wpninjas.com/downloads/front-end-posting/
직접 코딩 할 수도 있습니다. 기본적으로 양식을 만든 다음
wp_insert_post()
를 사용하여 전체 게시물을 만듭니다.샘플 양식 :
<form action="" id="primaryPostForm" method="POST"> <fieldset> <label for="postTitle"><?php _e('Post Title:', 'framework') ?></label> <input type="text" name="postTitle" id="postTitle" class="required" /> </fieldset> <fieldset> <label for="postContent"><?php _e('Post Content:', 'framework') ?></label> <textarea name="postContent" id="postContent" rows="8" cols="30" class="required"></textarea> </fieldset> <fieldset> <input type="hidden" name="submitted" id="submitted" value="true" /> <button type="submit"><?php _e('Add Post', 'framework') ?></button> </fieldset>
그런 다음 제출시 다음과 같은 프로세스를 저장합니다.
if ( isset( $_POST['submitted'] ) && isset( $_POST['post_nonce_field'] ) && wp_verify_nonce( $_POST['post_nonce_field'], 'post_nonce' ) ) { if ( trim( $_POST['postTitle'] ) === '' ) { $postTitleError = 'Please enter a title.'; $hasError = true; } $post_information = array( 'post_title' => wp_strip_all_tags( $_POST['postTitle'] ), 'post_content' => $_POST['postContent'], 'post_type' => 'post', 'post_status' => 'pending' ); wp_insert_post( $post_information ); }
전체 코드 및 튜토리얼 출처 : http://wp.tutsplus.com/tutorials/creative-coding/posting-via-the-front-end-inserting/
The easiest way would be to use something like Ninja Forms with the following paid extension:
http://wpninjas.com/downloads/front-end-posting/
You could also code this yourself. Essentially you'll create a form, and then use
wp_insert_post()
to create a full post.A sample form:
<form action="" id="primaryPostForm" method="POST"> <fieldset> <label for="postTitle"><?php _e('Post Title:', 'framework') ?></label> <input type="text" name="postTitle" id="postTitle" class="required" /> </fieldset> <fieldset> <label for="postContent"><?php _e('Post Content:', 'framework') ?></label> <textarea name="postContent" id="postContent" rows="8" cols="30" class="required"></textarea> </fieldset> <fieldset> <input type="hidden" name="submitted" id="submitted" value="true" /> <button type="submit"><?php _e('Add Post', 'framework') ?></button> </fieldset>
and then on submit, you'd save process it something like:
if ( isset( $_POST['submitted'] ) && isset( $_POST['post_nonce_field'] ) && wp_verify_nonce( $_POST['post_nonce_field'], 'post_nonce' ) ) { if ( trim( $_POST['postTitle'] ) === '' ) { $postTitleError = 'Please enter a title.'; $hasError = true; } $post_information = array( 'post_title' => wp_strip_all_tags( $_POST['postTitle'] ), 'post_content' => $_POST['postContent'], 'post_type' => 'post', 'post_status' => 'pending' ); wp_insert_post( $post_information ); }
The full code and tutorial is from: http://wp.tutsplus.com/tutorials/creative-coding/posting-via-the-front-end-inserting/
-
삽입이 아닌 게시물/페이지를 업데이트 (기존 편집)하고 싶습니다.I Just want to update (edit existing) the post/page, not insert.
- 0
- 2013-07-14
- user1983017
-
그렇다면 Scribu에서 이미 참조한 "프런트 엔드 편집기"플러그인을 사용해보십시오.Then why not try the already-referenced "Front End Editor" plugin by Scribu?
- 0
- 2013-07-14
- helgatheviking
표준 메타 상자와 일부 맞춤 입력란이있는 맞춤 게시물 유형이 있습니다.프런트 엔드의 양식을 통해 게시물을 편집하려면 어떻게해야합니까?