Я думаю, что вы искали различные функции, методы, такие как последнее изменение, dateModified, dateCreated и многое другое — чтобы напрямую изменить дату публикации в WordPress.
Существуют много различных способов как изменить дату публикации вордпресс, например:
- через SQL скрипт;
- вручную через phpMyAdmin с выгрузкой дат из базы;
- с использованием TextKit (программа позволяет обновлять и редактировать большие базы данных);
- самописные скрипты, которые располагаются в корне сайта и работают при запуске из строки браузера;
- в ручном режиме из административной части сайта;
- автоматическое обновление даты публикации в WordPress.
Эта статья покажет вам 100% решение для отображения и изменения даты, которое Google показывает в результатах поиска, но не злоупотребляйте этим.
Я рекомендую обновлять дату публикации записей в WordPress только тогда, когда вы действительно обновили свою статью. Не обновляйте дату публикации без добавления свежей информации для пользователя. Google может удалить страницы или даже веб-сайты, которые просто обновляют дату публикации, фактически не добавляя к ней никакого контента.
Для меня потребовалось некоторое время, чтобы понять, почему Google так упрямо не учитывает мою измененную дату и не отображает ее в результатах поиска. После миллионных проб бесполезных вариантов — я нашел решение как изменить дату публикации wordpress.
Как изменить дату публикации на WordPress
WordPress имеет функциональность, которая позволяет вам редактировать посты и изменять дату перед публикацией. Это полезная функция, для того чтобы сделать записи свежим и актуальным. Вы также можете изменить порядок публикации постов или страниц, изменив дату. Тем самым вы измените порядок отображение записей на страницах рубрик.
Самый легкий способ, который не требует каких либо знаний в кодировании и не влияет на содержание и форматирование записей. Это перейти к записи wordpress, на которой вы хотите изменить дату публикации. В поле публикации нажмите кнопку «Изменить» слева от графы «Опубликовано» и обновите дату.
Из административной части панели управления WordPress в разделе «Все записи» также можно изменить дату публикации. Для этого надо навести курсор мыши на статью, в которой желаете изменить дату, выбрать на надпись «Свойства», изменить дату и нажать на кнопку «Обновить».
Этот метод применим как на постах, так и на страницах. При изменении даты, если вы выберете будущую дату и время, записи попадут в «Запланированное». Посты будут автоматически размещены в назначенное время.
Обновить дату публикации в разметке schema.org
Я уже писал, что Google не учитывает некоторые теги в схеме, когда он обновляет свои «данные» на странице результатов поиска. Но есть один тег, который является ключом ко всему этому — datePublished.
Если у вас уже есть код schema.org на вашей странице, и вы знаете, в каком файле его изменить — просто добавьте эту строку в конец схемы — перед закрывающейся скобки}
:
1 2 | , "datePublished" : "<? php echo get_the_date ('Ymd \ TH: i: s', $ post-> ID);?> + 00:00" , // появится в Google |
Если у вас нет структурированных данных на вашей странице, вам придется добавить ее к каждой записи с помощью ловушки, вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function react2wp_update_published_date_on_google() { if ( is_single() ) : global $post; ?> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "NewsArticle", // Вы можете изменить NewsArticle на TechArticle "mainEntityOfPage": { "@type":"WebPage", "@id":"<?php echo get_permalink( $post->ID ); ?>" }, "author": { "@type":"Person", "name":"<?php echo get_the_author_meta( 'display_name', $post->post_author ); ?>" }, "headline":"<?php the_title(); ?>", "url":"<?php echo get_permalink( $post->ID ); ?>", "thumbnailUrl":"<?php echo get_the_post_thumbnail_url( $post->ID, 'full' ); ?>", "description":"<?php echo get_post_meta( get_the_ID(), '_yoast_wpseo_metadesc', true ); ?>", "datePublished":"<?php echo get_the_date( 'Y-m-d\TH:i:s', $post->ID ); ?>+00:00", } </script> <?php endif; } add_action( 'wp_head', 'react2wp_update_published_date_on_google' ); |
Добавьте это действие в конец вашего файла functions.php
через FTP-клиент или через Внешний вид > Редактор тем > functions.php
в панели WordPress.
Как обновить в WordPress дату публикации поста
На изображении выше, вы могли увидеть небольшой флажок с надписью «Принудительное обновление даты публикации» в окне публикации.
Каждый раз, когда устанавливать этот флажок и нажимать «Обновить», то активируется действие, которое изменит дату публикации поста на текущее время, не делая ничего лишнего вручную. Просто добавьте этот код в functions.php
в вашу активную тему так же, как вы добавили код для структурированных данных schema.org.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | function react2wp_update_publishing_date() { $nonce = wp_nonce_field( '_cj_update_publishing_date', '_cj_update_publishing_date_nonce', TRUE, FALSE); ?> <div class="misc-pub-section cj-update-publishing-date"> <label for="cj-update-publishing-date"> <input type="checkbox" id="cj-update-publishing-date" name="cj_update_publishing_date" value="1" /> <strong>Принудительное обновление даты публикации</strong> <?php echo $nonce ?> </label> </div> <? } add_action( 'post_submitbox_misc_actions', 'react2wp_update_publishing_date' ); function react2wp_update_publishing_date__save( $post_id ){ if ( wp_is_post_revision( $post_id ) ) { return; } if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } // ЕСЛИ ФЛАЖОК НЕ УСТАНОВЛЕН if ( ! isset ( $_POST[ 'cj_update_publishing_date' ] ) ) { return; } if ( ! wp_verify_nonce( $_POST[ '_cj_update_publishing_date_nonce' ], '_cj_update_publishing_date' )){ return; } $time = current_time('mysql'); remove_action('save_post', 'react2wp_update_publishing_date__save'); wp_update_post( array ( 'ID' => $post_id, // ID записи для обновления 'post_date' => $time, 'post_date_gmt' => get_gmt_from_date( $time ) ) ); add_action( 'save_post', 'react2wp_update_publishing_date__save' ); } add_action( 'save_post', 'react2wp_update_publishing_date__save', 10, 2 ); |
С помощью одной простой настройки в технологию вашего сайта на WordPress вам удастся поднять органический трафик более чем на 50% благодаря этому хаку:
- Повысится рейтинг в Google по целевому ключевому слову;
- Увеличиться рейтинг кликов на ваш сайт из поиска;
- Увеличится взаимодействие пользователя с вашим контентом.
И все это бесплатно в течение примерно 20 минут. Но этот совет относится только к уже существующему контенту, который пользуется популярностью в поисковой системе.
Если вас смущает код выше, тем что нужно постоянно нажимать на чекбокс принудительного обновления, то функцию можно сократить до минимума, применив код ниже:
1 2 3 4 5 6 7 | function reset_post_date_wpse_121565($data,$postarr) { // var_dump($data,$postarr); die; // debug $data['post_date'] = $data['post_modified']; $data['post_date_gmt'] = $data['post_modified_gmt']; return $data; } add_filter('wp_insert_post_data','reset_post_date_wpse_121565',99,2); |
Примечание: Если вы прописали этот код в своем файле functions.php, то рекомендую запомнить, то что она у вас установлена. Так как при каждом нажатии на кнопку «Обновить» в записи, будет обновляться и дата публикации вашего поста.
Итак, теперь вы знаете как обновить дату, но это не совсем удобный вариант для обновлении даты на всех записях вашего блога. В следующем разделе я дам и объясню вам, как автоматически изменить дату публикации на всех записях WordPress — нажатием одной кнопки.
Автоматическое обновление даты публикации в WordPress
Я рад сообщить вам, что с версии WordPress 4.7 разработчики и вебмастера могут регистрировать свои собственные пункты для массовых действий на экранах списков записей и страниц.
WordPress обладает очень мощным механизмом — хуками и фильтрами. Чтобы добавить параметр в раскрывающийся HTML-элемент «Массовые действия», нужно зарегистрировать вызов в bulk_actions-{screen_id}
фильтре, который добавит новый параметр в массив. Для обработки отправки формы массового действия зарегистрируем обратный вызов в handle_bulk_actions-{screen_id}
фильтре для соответствующего экрана. Поэтому обязательно изменим URL перенаправления, переданный $redirect_url
. Это позволит нам отобразить уведомление для пользователя.
Именно при помощи добавления собственного кода в один из хуков мы и решим задачу как добавить свое массовое действие в WordPress и автоматически изменить дату публикации в базе данных MySQL. Чтобы добавить обработчик массовых действий используем следующий код с хуком уведомления, чтобы пользователь знал, что произошло:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | /* Своя Функция массового изменения даты публикации в записях */ function register_my_bulk_actions($bulk_actions) { $bulk_actions['data_to_public'] = __('Изменить Дату публикации', 'data_to_public') ; return $bulk_actions; } add_filter( 'bulk_actions-'.'edit-post', 'register_my_bulk_actions' ); function my_bulk_action_handler( $redirect_to, $doaction, $post_ids ){ // ничего не делаем если это не наше действие if( $doaction !== 'data_to_public' ) return $redirect_to; foreach( $post_ids as $post_id ){ // действие для каждого поста if ( wp_is_post_revision( $post_id ) ) { return; } if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } $time = current_time('mysql'); remove_action('save_post', 'react2wp_update_publishing_date__save'); wp_update_post( array ( 'ID' => $post_id, // ID записи для обновления 'post_date' => $time, 'post_date_gmt' => get_gmt_from_date( $time ) ) ); add_action( 'save_post', 'react2wp_update_publishing_date__save' ); } $redirect_to = add_query_arg( 'my_bulk_action_done', count( $post_ids ), $redirect_to ); return $redirect_to; } add_filter( 'handle_bulk_actions-'.'edit-post', 'my_bulk_action_handler', 10, 3 ); function my_bulk_action_admin_notice(){ // выводим уведомления с результатом if( empty( $_GET['my_bulk_action_done'] ) ) return; $data = $_GET['my_bulk_action_done']; $msg = sprintf( 'Дата публикации изменена в %d записей.', intval($data) ); echo '<div id="message" class="updated"><p>'. $msg .'</p></div>'; } add_action( 'admin_notices', 'my_bulk_action_admin_notice' ); |
В том месте, где проверяется id записи WordPress, вы можете проверить на соответствие записи, рубрики или страницы.
В выпадающем списке массовых действий появился пункт «Изменить Дату публикации». Код нашей функции выполнит следующие действия, если пользователь выберет нужный пункт выпадающего списка :
- проверит что выбранное действие — наше;
- выполнит массовое действие;
- переведет пользователя обратно на страницу с выводом уведомления.
Заключение
Вы можете установить плагины для обновления даты, но после установки вы увидите меню с многочисленными настройками. Или вы можете использовать ручной вариант, который я предпочитаю. Так что, если у вас есть устаревший контент, то раз в 2 месяца обновляйте свой контент. Нажимая кнопку «Применить» в массовых действиях с записями и код автоматически обновит «дату публикации».
Вот и все. Думаю вы сможете сами модифицировать приведенные коды так, чтобы они работали так, как вам нужно. То есть я не просто изменял дату публикации, но массово назначал выбранным постам мета-значение и выполнял любые другие действия.
Вот и все для этой статьи, теперь вы знаете как публиковать свежий контент, не беспокоясь, увидит ли это Google или нет! Вы можете поделиться своими мыслями в комментариях ниже.