0

ある人が訪れたサイト内の最後の3〜5ページをどのように表示できるかを理解しようとしています。いくつか検索しましたが、それを行うWPプラグインが見つかりませんでした。誰かが知っている場合は、その方向に向けてください:)そうでない場合は、最初から作成する必要があります。助けが必要です。

私はDBとそれがどのように機能するかを理解しようとしてきました。クッキーを使用してそれを行うjavascriptオプションがない限り、PHPではこれが魔法が起こる場所だと思います。

私はすべてのアイデアにオープンです:P&ありがとう

4

2 に答える 2

3

このようなプラグインをコーディングする場合は、セッションCookieを使用して、array_unshift()およびarray_pop()を介して配列にデータを入力します。それは次のように単純です:

$server_url = "http://mydomain.com";
$current_url = $server_url.$_SERVER['PHP_SELF'];
$history_max_url = 5; // change to the number of urls in the history array

//Assign _SESSION array to variable, create one if empty ::: Thanks to Sold Out Activist for the explanation!
$history = (array) $_SESSION['history'];

//Add current url as the latest visit
array_unshift($history, $current_url);
//If history array is full, remove oldest entry
if (count($history) > $history_max_url) {
    array_pop($history);
}
//update session variable
$_SESSION['history']=$history;

今、私はこれをその場でコーディングしました。構文エラーまたはタイプミスがある可能性があります。そのような間違いが発生した場合は、通知を出すだけで修正します。この回答の目的は、主に概念実証を行うことです。これをお好みに合わせて調整できます。session_start()がすでにコードに含まれていると想定していることに注意してください。

それが役に立てば幸い。

===============

おい!回答が遅れて申し訳ありませんが、私は数日間町を離れていました!:)

このアドオンは、LIタグを使用した印刷ソリューションのリクエストに答えるためのものです

これが私がすることです:

print "<ol>";
foreach($_SESSION['history'] as $line) {
     print "<li>".$line.</li>";
}
print "</ol>"; 

そのような単純な。ここでforeachループを読む必要があります:http ://www.php.net/manual/en/control-structures.foreach.php

session_start();については、$_SESSION変数を使用する前に配置してください。

お役に立てば幸いです。:)

于 2011-08-18T18:59:57.883 に答える
0

wordpress元の質問にタグが付いているため、WordPress5以降の上記のコードを更新して翻訳します。session_start()どこにも必要ないことに注意してください。

次に、以下のコードをsingular.phpテンプレート(または必要に応じてsingle.php+テンプレート)に追加します。page.php

/**
 * Store last visited ID (WordPress ID)
 */
function so7035465_store_last_id() {
    global $post;

    $postId = $post->ID; // or get the post ID from your template

    $historyMaxUrl = 3; // number of URLs in the history array
    $history = (array) $_SESSION['history'];

    array_unshift($history, $postId);

    if (count($history) > $historyMaxUrl) {
        array_pop($history);
    }

    $_SESSION['history'] = $history;
}

// Display latest viewed posts (or pages) wherever you want
echo '<ul>';
    foreach ($_SESSION['history'] as $lastViewedId) {
        echo '<li>' . get_permalink($lastViewedId) . '</li>';
    }
echo '</ul>';

テンプレートにso7035465_store_last_id()関数を配置することで、最新の表示済みカスタム投稿タイプ(CPT)を保存することもできます。single-cpt.php

フックに追加したり、アクションとしてテンプレートに挿入したりすることもできますが、それはこの質問の範囲を超えています。

于 2020-02-20T13:51:26.673 に答える