0

まず、私がやりたいことを説明させてください。すべてのユーザーに独自のテーブルがあり、フロントエンドで投稿を表示、編集、削除できます。しかし、彼らが記事を作成すると、ステータスは「保留中」になります。これは、管理者である私だけが記事に「公開」ステータスを与えることができるためです。私がやりたいことは、投稿が作成された日付または最後に変更された日付をユーザーに表示し、次にそれが公開された日付を表示することです。

私が知っている発行日を表示する方法。get_the_date('Y-m-d');投稿が任意のユーザーによって変更された日付が表示されるため、これで問題なく動作します。しかし、ユーザーが最後に変更した日付をどこかに保存する必要があります。

私がなんとかしたことは次のようなものです:

<?php $id = get_the_ID(); ?>
<?php $the_last_time="the_time_". $id; ?>
<?php $the_last_date="the_date_". $id; ?>

<?php if ( in_array( $post->post_status, array('draft', 'future', 'pending') ) ) { ?>
    <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'wpuf' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
    <p><?php echo get_the_time('G:i'); ?></p>
    <p><?php echo get_the_date('Y-m-d'); ?></p>
    <?php $$the_last_time=get_the_time('G:i'); ?>
    <?php $$the_last_date=get_the_date('Y-m-d'); ?>
    <?php setcookie("$the_last_time", $$the_last_time, time()+2592000); ?>
    <?php setcookie("$the_last_date", $$the_last_date, time()+2592000); ?>
<?php } else { ?>
    <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'wpuf' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
    <p><?php echo htmlspecialchars($_COOKIE["$the_last_time"]) ?></p>
    <p><?php echo htmlspecialchars($_COOKIE["$the_last_date"]) ?></p>
<?php } ?>


<?php wpuf_show_post_status( $post->post_status ) ?>
        <p><?php echo get_the_time('G:i'); ?></p>
        <p><?php echo get_the_date('Y-m-d'); ?></p>

ご覧のとおり、これらの変数を保存するために Cookie を使用しています。しかし、問題は、変数情報を 1 つのユーザーのコンピューターにのみ保存していることです。私が必要としているのは、任意のコンピューターからログインしたすべてのユーザーがこれらの日付を表示できることです。

私を助けることができるリードを前もって感謝します。;)

- - - - - 編集 - - - - -

私は .php ファイルを作成しようとしましたが、そこにこれらの変数を保存しました。その後、nm が必要なときにそのファイルを含めることができますが、動作しないため何か間違ったことをしています。

//Creating variables    
<?php $id = get_the_ID(); ?>
        <?php $the_last_time="the_time_". $id; ?>
        <?php $the_last_date="the_date_". $id; ?>
        <?php $the_last_time_file="the_time_file_". $id; ?>
        <?php $the_last_date_file="the_date_file_". $id; ?>

//Every time after user modification
<?php $$the_last_time=get_the_time('G:i'); ?>
<?php $$the_last_date=get_the_date('Y-m-d'); ?>
<?php $$the_last_date_file=var_export($$the_last_date, true);?>
<?php $$the_last_date_file="<?php\n\n\$$the_last_date_file = $$the_last_date;\n\n?>";?>
<?php file_put_contents('/cookies/time-date-variables.php', $$the_last_date_file);?>

//And when I publish that post it should show echo variable
    <?php include '/cookies/time-date-variables.php'; ?>
    <?php echo $$the_last_date_file; ?>

私が間違っていることは何ですか?リードはありますか?

4

1 に答える 1

0

Wordpress には、最終更新日を取得する方法が既に用意されています。これをループで使用できます。

<?php the_modified_date( $d, $before, $after, $echo ); ?>

ループを使用していない場合は、DB に直接クエリを実行して、投稿の最新バージョンを取得できます。Wordpress は、post_parent フィールドの元の投稿の ID を使用して、投稿の各編集を DB の個別の行として保存します。したがって、DB 内のすべての編集の完全な履歴があります。これにより、ユーザー ID も得られるため、特定のユーザーによる編集を選択できます。

私はここで唾を吐きますが、おそらくこのようになります

$postID = 1; // the id of the post
$userID = 1; // The users id for whom you want to show the last edit

$sql = "SELECT post_date FROM wp_posts WHERE post_parent = $postID AND post_author = $userID ORDER BY post_date DESC LIMIT 1";

$userModifiedDate = $wpdb->query($sql);

それを行うためのより効率的な/ワードプレスの方法があるでしょうが、それはうまくいくはずです.

于 2013-01-23T10:54:09.637 に答える