web-dev-qa-db-ja.com

リンクをクリックした後に投稿を公開

私はフロントエンドの投稿フォーム(CF7)を持っています。そこには(もちろん他のデータも含めて)ユーザーが彼のEメールを入力します。今度はステータスを保留に設定します。

私が欲しいのは、ユーザーがautoresponderにメールを通すことです。クリックすると、ステータスがPUBLISHに変わります。これに対する解決策はありますか?自動返信は問題ではありません、私はこのリンクを設定する方法を知りません。

1
M P

投稿が作成されてpendingに設定されたら、自動発行用の一意の識別子を作成します。次に例を示します。

$unique = md5( $post->post_content );
add_post_meta( $post->ID, '_auto_publish', $unique );

今すぐ電子メールのリンクを作成します。

$link = get_permalink( $post->ID );
$link = add_query_arg(
    array(
        'autopublish' => $unique,
        'pid'         => $post->ID
    ),
    $link
);

このリンクを送信者のアドレスに送信してください。

print "<$link>";

次に、受信者がリンクをクリックしたときに一致する$_GETパラメータを確認します。

if ( isset ( $_GET[ 'autopublish' ] )
    and isset ( $_GET[ 'pid' ] )
    and is_numeric( $_GET[ 'pid' ] )
    and $post = get_post( $_GET[ 'pid' ] )
    and $_GET[ 'autopublish' ] === get_post_meta( $post->ID, '_auto_publish', TRUE )
    )
{
    $post->post_status = 'publish';
    wp_update_post( $post );
    delete_post_meta( $post->ID, '_auto_publish' );
}
1
fuxia