Как сохранить идентификатор записи в локальном хранилище из файла Single.php - PullRequest
0 голосов
/ 28 мая 2019

Следующий код в файле Single.php не работает должным образом. $ post-> ID и is_user_logged_in () получают нулевые значения.Если все работает нормально, я могу получить идентификатор записи в виде массива в локальном хранилище.

<script>
    window.onload = function() {
        var logged_in='<?php echo is_user_logged_in() ?>';
        if (logged_in==false || logged_in==0) {

                var myArray =  JSON.parse(localStorage.getItem('articles') )|| [];
                var article_postid='<?php echo $post->ID ?>';

                //check already read? if not push into array
                index = is_exist.call(myArray, article_postid); 
                if(!index){
                    myArray.push(article_postid);
                    localStorage.setItem('articles', JSON.stringify(myArray));
                }
        }
    }
    var is_exist = function(article_postid) {
        // Per spec, the way to identify NaN is that it is not equal to itself
        var findNaN = article_postid !== article_postid;
        var indexOf;
        if(!findNaN && typeof Array.prototype.indexOf === 'function') {
            indexOf = Array.prototype.indexOf;
        } else {
            indexOf = function(article_postid) {
                var i = -1, index = -1;
                for(i = 0; i < this.length; i++) {
                    var item = this[i];
                    if((findNaN && item !== item) || item === article_postid) {
                        index = i;
                        break;
                    }
                }
                return index;
            };
        }
        return indexOf.call(this, article_postid) > -1;
    };
    </script>

1 Ответ

0 голосов
/ 28 мая 2019

Пожалуйста, попробуйте этот код. Добавьте этот код в файл functions.php вашей активированной темы и проверьте.

function add_js_code_to_footer(){

    if( is_singular( 'post' ) ){
    global $post;
    ?>
        <script>
            window.onload = function() {
                var logged_in='<?php echo is_user_logged_in() ?>';
                if (logged_in==false || logged_in==0) {

                        var myArray =  JSON.parse(localStorage.getItem('articles') )|| [];
                        var article_postid='<?php echo $post->ID ?>';

                        //check already read? if not push into array
                        index = is_exist.call(myArray, article_postid); 
                        if(!index){
                            myArray.push(article_postid);
                            localStorage.setItem('articles', JSON.stringify(myArray));
                        }
                }
            }
            var is_exist = function(article_postid) {
                // Per spec, the way to identify NaN is that it is not equal to itself
                var findNaN = article_postid !== article_postid;
                var indexOf;
                if(!findNaN && typeof Array.prototype.indexOf === 'function') {
                    indexOf = Array.prototype.indexOf;
                } else {
                    indexOf = function(article_postid) {
                        var i = -1, index = -1;
                        for(i = 0; i < this.length; i++) {
                            var item = this[i];
                            if((findNaN && item !== item) || item === article_postid) {
                                index = i;
                                break;
                            }
                        }
                        return index;
                    };
                }
                return indexOf.call(this, article_postid) > -1;
            };
        </script>

    <?php
    }

}
add_action("wp_footer","add_js_code_to_footer");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...