zamoose
  • 0
Эксперт

Как создать динамически обновляемое заявление об авторских правах?

  • 0

Я хотел бы найти оптимизированный, безопасный для WP_Query метод для создания динамически заполняемого заявления об авторских правах для нижней части моих тем. То есть я хотел бы проверить дату (по годам) моих самых старых и новых сообщений, а затем вывести что-то вроде строк

[blog name] © [oldest post year]-[newest post year] [primary blog author]

Какой самый простой/безопасный способ сделать это?

Share
  1. Вот что я использую:

    function oenology_copyright() {
        global $wpdb;
        $copyright_dates = $wpdb->get_results("
            SELECT
                YEAR(min(post_date_gmt)) AS firstdate,
                YEAR(max(post_date_gmt)) AS lastdate
            FROM
                $wpdb->posts
            WHERE
                post_status = 'publish'
        ");
        $output = '';
        if($copyright_dates) {
            $copyright = "© " . $copyright_dates[0]->firstdate;
                if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) {
                    $copyright .= '-' . $copyright_dates[0]->lastdate;
                }
            $output = $copyright;
        }
        return $output;
    }
    

    Конечно, если есть более чистый, безопасный или более эффективный метод, я бы тоже хотел о нем услышать!

    РЕДАКТИРОВАТЬ:

    А вот более подчищенная версия, которая добавляет даты авторских прав в wp_cache:

    function oenology_copyright() {
        // check for cached values for copyright dates
        $copyright_cache = wp_cache_get( 'copyright_dates', 'oenology' );
        // query the database for first/last copyright dates, if no cache exists
        if ( false === $copyright_cache ) { 
            global $wpdb;
            $copyright_dates = $wpdb->get_results("
                SELECT
                YEAR(min(post_date_gmt)) AS firstdate,
                YEAR(max(post_date_gmt)) AS lastdate
                FROM
                $wpdb->posts
                WHERE
                post_status = 'publish'
            ");
            $copyright_cache = $copyright_dates;
            // add the first/last copyright dates to the cache
            wp_cache_set( 'copyright_dates', $copyright_cache, 'oenology', '604800' );
        }
        // Build the copyright notice, based on cached date values
        $output = '© ';
        if( $copyright_cache ) {
            $copyright = $copyright_cache[0]->firstdate;
            if( $copyright_cache[0]->firstdate != $copyright_cache[0]->lastdate ) {
                $copyright .= '-' . $copyright_cache[0]->lastdate;
            }
            $output .= $copyright;
        } else {
            $output .= date( 'Y' );
        }
        return $output;
    }
    

    Это немного улучшит производительность?

    • 0
    • Один из способов, который я могу придумать, чтобы улучшить это, — это сохранить результаты в переходном режиме для оставшихся дней года. Не уверен, насколько ваш запрос с точки зрения производительности и его действия на больших установках, кэширование может быть хорошей идеей.

      • 0
    • Это действительно близко, и маршрут, который я собирался выбрать, хотя дополнительный аспект запроса — это то, что, как я надеюсь, может быть обойдено какой-то другой предприимчивой душой.

      • 0
    • Я только что добавил исправленную функцию, которая использует wp_cache ( wp_cache_get(), wp_cache_set() ) для хранения/получения значений даты авторского права.

      • 0
    • Пожалуйста, добавьте правильное объяснение того, что делает ваш код. Кроме того, глядя на это, это не ваш код, а скопированный откуда-то еще. Вы должны указать, кто является первоначальным автором и откуда вы скопировали контент. Нарушение правил авторского права является серьезным правонарушением. Кроме того, правильно отформатируйте свой код и сделайте его более читабельным для других.

      • 0
  2. /* Dynamic Copyright Date Start */  
    function royaltechbd_copyright() {
    global $wpdb;
    $copyright_dates = $wpdb->get_results("
    SELECT
    YEAR(min(post_date_gmt)) AS firstdate,
    YEAR(max(post_date_gmt)) AS lastdate
    FROM
    $wpdb->posts
    WHERE
    post_status = 'publish'
    ");
    $output = '';
    if($copyright_dates) {
    $copyright = "© " . $copyright_dates[0]->firstdate;
    if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) {
    $copyright .= '-' . $copyright_dates[0]->lastdate;
    }
    $output = $copyright;
    }
    return $output;
    }
    /* Dynamic Copyright Date End */
    
    • 0

Оставить ответ

You must login to add an answer.