Количество слов и ошибки времени чтения, которые я не могу отследить и исправить в Wordpress - PullRequest
0 голосов
/ 03 марта 2019

Используя Wordpress, я изменил пользовательскую тему для отображения количества слов постов и приблизительного времени чтения с помощью скрипта, найденного на веб-сайте.Я даже добавил возможность включить / выключить его.Сценарий работает нормально ... или я так подумал.

Когда я включил параметры отладки Wordpress для поиска ошибок в теме, я получил один для этого сценария.Однако я не вижу проблемы.

Ошибки, отображаемые при просмотре веб-страницы :

Это сообщение содержит

Примечание:Неопределенная переменная: запись в /home/xxxxxx/wordpress.xxxxxx.com/wp-content/themes/xxxxxx/functions.php в строке 1676

Примечание: попытка получить свойство необъекта в / home /xxxxxx / wordpress.xxxxxx.com / wp-content / themes / xxxxxx / functions.php в строке 1676

52 слова.

В этом сообщении вы узнаете о

Примечание: неопределенная переменная: запись в /home/xxxxxx/wordpress.xxxxxx.com/wp-content/themes/xxxxxx/functions.php в строке 1683

Примечание: попытка получить свойство необъекта в /home/xxxxxx/wordpress.xxxxxx.com/wp-content/themes/xxxxxx/functions.php в строке 1683

1 минутачитать.

Сценарий, который я скопировал и добавил в: /functions.php

/*** ADD POST WORD COUNT ***/
function word_count() {
    $content = get_post_field( 'post_content', $post->ID );
    $word_count = str_word_count( strip_tags( $content ) );
    return $word_count;
}

/*** ADD ESTIMATED READING TIME ***/
function reading_time() {
    $content = get_post_field( 'post_content', $post->ID );
    $word_count = str_word_count( strip_tags( $content ) );
    $readingtime = ceil($word_count / 200);
    if ($readingtime == 1) {
      $timer = " minute";
    } else {
      $timer = " minutes";
    }
    $totalreadingtime = $readingtime . $timer;
    return $totalreadingtime;
}

Параметры, которые я добавил в: /functions.php

    /* MAIN SETTINGS - Show Entry Word Count Setting */
    $wp_customize->add_setting('swag_main_post_word_count', array(
        'default' => 'swag-main-post-word-count-yes'
    ));
    $wp_customize->add_control('swag_main_post_word_count', array(
        'label' => 'Display Post Word Count',
        'section' => 'swag_main_design',
        'type' => 'select',
        'choices' => array(
            'swag-main-post-word-count-yes' => __('Yes'),
            'swag-main-post-word-count-no' => __('No')
        )
    ));

    /* MAIN SETTINGS - Show Entry Reading Time Setting */
    $wp_customize->add_setting('swag_main_post_read_time', array(
        'default' => 'swag-main-post-read-time-yes'
    ));
    $wp_customize->add_control('swag_main_post_read_time', array(
        'label' => 'Display Post Read Time',
        'section' => 'swag_main_design',
        'type' => 'select',
        'choices' => array(
            'swag-main-post-read-time-yes' => __('Yes'),
            'swag-main-post-read-time-no' => __('No')
        )
    ));

В файле шаблона темы: /template-parts/content.php

<?php
    if (isset($swag_main_post_word_count) && $swag_main_post_word_count=='swag-main-post-word-count-yes') {
            echo '<div class="word-count">This post contains ';
            echo '' . word_count() . '';
            echo ' words.</div>';
    }
?>

<?php
    if (isset($swag_main_post_read_time) && $swag_main_post_read_time=='swag-main-post-read-time-yes') {
            echo '<div id="reading-time">This post will take you about ';
            echo '' . reading_time() . '';
            echo ' to read.</div>';
    }
?>

Я не думаю, чтоошибка в добавленных мной опциях, но я добавил их на всякий случай.Я думаю, что ошибка в сценарии, который я сам скопировал.Что это и как мне это исправить?

1 Ответ

0 голосов
/ 03 марта 2019

Попробуйте:

/*** ADD POST WORD COUNT ***/
function word_count() {
    global $post;
    $content = get_post_field( 'post_content', $post->ID );
    $word_count = str_word_count( strip_tags( $content ) );
    return $word_count;
}

/*** ADD ESTIMATED READING TIME ***/
function reading_time() {
    global $post;
    $content = get_post_field( 'post_content', $post->ID );
    $word_count = str_word_count( strip_tags( $content ) );
    $readingtime = ceil($word_count / 200);
    if ($readingtime == 1) {
      $timer = " minute";
    } else {
      $timer = " minutes";
    }
    $totalreadingtime = $readingtime . $timer;
    return $totalreadingtime;
}

Я добавил global $post; к каждой функции, поэтому она находится в области видимости, когда вызывается $post->ID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...