web-dev-qa-db-ja.com

フロントエンド登録/ログイン&パブリッシュ/更新1カスタム投稿

フロントエンドフォームを介して 登録/ログインをユーザーに許可できるようにしたい そして 1つのカスタム投稿を作成できるようにしたい これだけができるようになる 編集してフロントエンド形式で更新する

これは「ダッシュボード」の一部になります。

これが http://www.advancedcustomfield.com プラグインと連動することは非常に重要です。

私はなんとかACFのフロントエンドフォームを使ってそこに到達することができました。これにより、カスタム投稿の編集と更新が可能になります。

これに関する問題はそれです:

  1. フロントエンド登録/ログインはありません。
  2. この投稿はすでに作成されていますが、最初にログインして1つの投稿を作成するにはユーザーが必要です。
  3. 実際のページにいるときにのみ、投稿をフロントエンドで編集することができます。自分の投稿だけを編集できるようにする必要があります。

これらの問題について正しい方向を向いている人、または問題を回避するための独創的な方法があれば、それは素晴らしいことです。私は他の多くのプラグインを使わずにこれを行う必要があります。

更新:

フロントエンドフォームから新しい投稿を作成できるようになります。フォームのactionを使用して、作成したばかりのカスタム投稿にユーザーをリダイレクトできると思います。そのため、下の2番目のコードボックスで投稿を更新/編集できます。

だから私がする必要があるのはユーザー登録/ログインだけです!

<?php $postTitle = $_POST['post_title'];
$post = $_POST['post'];
$submit = $_POST['submit'];

if(isset($submit)){

    global $user_ID;

    $new_post = array(
        'post_title' => $postTitle,
        'post_content' => $post,
        'post_status' => 'publish',
        'post_date' => date('Y-m-d H:i:s'),
        'post_author' => $user_ID,
        'post_type' => 'post',
        'post_category' => array(0)
    );

    wp_insert_post($new_post);

}

?>
<!DOCTYPE HTML SYSTEM>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled Document</title>
</head>

<body>
<div id="wrap">
<form action="" method="post">
<table border="1" width="200">
  <tr>
    <td><label for="post_title">Post Title</label></td>
    <td><input name="post_title" type="text" /></td>
  </tr>
  <tr>
    <td><label for="post">Post</label></td>
    <td><input name="post" type="text" /></td>
  </tr>
</table>

<input name="submit" type="submit" value="submit" />
</form>
</div>

</body>
</html>

以下のコードで、ユーザーは作成したばかりの投稿を編集/更新することができます。

<?php
/**
 * @package WordPress
 * @subpackage Default_Theme
 * Template Name: Login
 */
acf_form_head();
get_header(); ?>

    <?php if (have_posts()) : ?>
        <?php while (have_posts()) : the_post(); ?>

<div style="width:719px;">
<?php global $current_user;
get_currentuserinfo();
$page_name = $current_user->user_login; ?>
Logged in as: <?php echo $page_name; ?> (<?php echo $current_user->ID; ?>)
<br />
List posts by <?php echo $page_name; ?>:

<?php               
$loop = new WP_Query( array(
    'post_type' => 'page',
    'author' => $current_user->ID
));

while ( $loop->have_posts() ) : $loop->the_post(); 
the_title();
echo "<br>";
endwhile;

//Reset Query
wp_reset_query();

?>

<?php $defaults = array(
    'post_id' => $post->ID, // post id to get field groups from and save data to
    'field_groups' => array(), // this will find the field groups for this post (post ID's of the acf post objects)
    'form_attributes' => array( // attributes will be added to the form element
        'class' => ''
    ),
    'return' => add_query_arg( 'updated', 'true', get_permalink() ), // return url
    'html_field_open' => '<div class="field">', // field wrapper open
    'html_field_close' => '</div>', // field wrapper close
    'html_before_fields' => '', // html inside form before fields
    'html_after_fields' => '', // html inside form after fields
    'submit_value' => 'Update', // value for submit field
    'updated_message' => 'Post updated.', // default updated message. Can be false to show no message
);

acf_form(); ?>
</div>

        <?php endwhile; ?>
    <?php endif; ?>

<?php get_footer(); ?>
4
Rob

WP User Frontendプラグインは、すべてのニーズを満たします。あなたはここでプラグインを見つけることができます: https://wordpress.org/extend/plugins/wp-user-frontend/ 。プラグインは、ユーザーが新しい投稿を作成したり、投稿を編集したり、サイトのフロントエンドからプロフィールを編集したりできるようにします。そのため、ユーザーは管理者パネルに入る必要はありません。彼らがする必要があるすべてはフロントエンドからすることができます。

あなたが小さなGoogle検索をするならば、あなたは類似の特徴を持つ他の多くのプラグインに出会うでしょう。私はWPユーザーフロントエンドがあなたのニーズと望みに最も相溶性があると信じています。

5
Aleks

あなたはすでに編集の問題を解決しているので、あなたのフロントエンドのログインと登録を解決するには s2memberプラグイン を使ってください。私は自分のサイトでそれを使ってメンバーシップを扱い、メンバーがWordpressのバックエンドにアクセスするのを防ぎます。

1
Logen

私はWordpressのバックエンドにアクセスせずにユーザー登録とログインにwp-membersプラグインを使用しています。ただし、パスワードをリセットするにはカスタムコーディングが必要になります。 この解決策 を使っています。

ユーザーが新しい投稿を作成できるようにするコードをありがとう。

0
Adj

フロントエンドでユーザー登録とログインを管理するだけのために、 テーマMy Login はかなりいい仕事をします。

このプラグインはあなたの現在のテーマに従ってWordPressのログイン、登録そしてパスワードを忘れたページをテーマにしています。テーマからのページテンプレートを使用して、wp-login.phpの代わりに使用するページを作成します。サイドバーログイン用のウィジェットも含まれています。

プラグインページにはスクリーンショットがありません。
enter image description here


ここで、Template Name: Loginを使用するページにユーザーをリダイレクトします。
enter image description here

0
brasofilo