Рецепты WordPress
Сборник решений для увеличения удобства при работе с wordpress
- Вставлять php код в страницы
- Убрать URL из комментариев
- Ограничение длины комментария
- Показывать изображение записи в RSS
- Дубликатор постов в WP
- Создание меню и страниц управления в админке
- Плагин постинга на стену VK, в ленту Телеграм и импорт со стены VK
- Параметры NGINX
Вставлять php код в страницы
В functions.php добавить
if( 'Исполняемый PHP код в контенте' ){ add_filter( 'the_content', 'content_exec_php', 0 ); function content_exec_php( $content ){ return preg_replace_callback( '/\[exec( off)?\](.+?)\[\/exec\]/s', '_content_exec_php', $content ); } function _content_exec_php( $matches ){ if( ' off' === $matches[1] ){ return "\n\n<".'pre>'. htmlspecialchars( $matches[2] ) .'.">\n\n"; } else { eval( "ob_start(); {$matches[2]}; \$exec_php_out = ob_get_clean();" ); return $exec_php_out; } } }
Использование:
[exec]PHP_код[/exec]
Убрать URL из комментариев
В functions.php добавить
add_filter('comment_form_default_fields', 'unset_url_field');
function unset_url_field($fields){
if(isset($fields['url']))
unset($fields['url']);
return $fields;
}
Ограничение длины комментария
В functions.php добавить
function number_characters_comments($comment) {
if ( strlen( $comment['comment_content'] ) > 500 ) {
wp_die('Комментарий слишком длинный.');
}
if ( strlen( $comment['comment_content'] ) < 20 ) {
wp_die('Комментарий слишком короткий. Пожалуйста, введите не менее 30 символов.');
}
return $comment;
}
add_filter( 'preprocess_comment', 'number_characters_comments' );
Показывать изображение записи в RSS
В functions.php:
function wcs_post_thumbnails_in_feeds( $content ) {
global $post;
if( has_post_thumbnail( $post->ID ) ) {
$content = '
'
.preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'thumbnail' ) ) . '' . $content;
}
return $content;
# get_the_post_thumbnail( $post->ID )
# preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'large' ) )
}
add_filter( 'the_excerpt_rss', 'wcs_post_thumbnails_in_feeds' );
add_filter( 'the_content_feed', 'wcs_post_thumbnails_in_feeds' );
Создание меню и страниц управления в админке WP
В functions.php:
add_action( 'admin_menu', 'my_menu' );
/** Пункты меню */
function my_menu() {
add_menu_page( 'My Menu', 'My Menu', 'manage_options', 'my_menu', 'main_menu' );
add_submenu_page('my_menu', '1 submenu', 'First Submenu', 'manage_options', 'First Submenu', 'sub_menu_1');
add_submenu_page('my_menu', '2 submenu', 'Second Submenu', 'manage_options', 'SecondSubmenu', 'sub_menu_2');
}
/** Функции меню -1 */
function main_menu() {
if ( !current_user_can( 'manage_options' ) ) {
wp_die( __( 'You do not have sufficient permissions to access this page.' ));
}
echo '<br />Основные функции<br />';
// тут всякие функции
echo '  <a href="#") class="button button-primary button-large">SomeThing</a>' ;
}
function sub_menu_1() {
if ( !current_user_can( 'manage_options' ) ) {
wp_die( __( 'You do not have sufficient permissions to access this page.' ));
}
echo '<br />Еще функции<br />';
// тут всякие функции
}
Дубликатор постов в WP
Вставить в functions.php
/* Start post dublication
* Function for post duplication. Dups appear as drafts. User is redirected to the edit screen
*/
function rd_duplicate_post_as_draft(){
global $wpdb;
if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) {
wp_die('No post to duplicate has been supplied!');
}
/*
* Nonce verification
*/
if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) )
return;
/*
* get the original post id
*/
$post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
/*
* and all the original post data then
*/
$post = get_post( $post_id );
/*
* if you don't want current user to be the new post author,
* then change next couple of lines to this: $new_post_author = $post->post_author;
*/
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
/*
* if post data exists, create the post duplicate
*/
if (isset( $post ) && $post != null) {
/*
* new post data array
*/
$args = array(
'comment_status' => $post->comment_status,
'ping_status' => $post->ping_status,
'post_author' => $new_post_author,
'post_content' => $post->post_content,
'post_excerpt' => $post->post_excerpt,
'post_name' => $post->post_name,
'post_parent' => $post->post_parent,
'post_password' => $post->post_password,
'post_status' => 'draft',
'post_title' => $post->post_title,
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
'menu_order' => $post->menu_order
);
/*
* insert the post by wp_insert_post() function
*/
$new_post_id = wp_insert_post( $args );
/*
* get all current post terms ad set them to the new post draft
*/
$taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag");
foreach ($taxonomies as $taxonomy) {
$post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
}
/*
* duplicate all post meta just in two SQL queries
*/
$post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");
if (count($post_meta_infos)!=0) {
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
foreach ($post_meta_infos as $meta_info) {
$meta_key = $meta_info->meta_key;
if( $meta_key == '_wp_old_slug' ) continue;
$meta_value = addslashes($meta_info->meta_value);
$sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'";
}
$sql_query.= implode(" UNION ALL ", $sql_query_sel);
$wpdb->query($sql_query);
}
/*
* finally, redirect to the edit post screen for the new draft
*/
wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) );
exit;
} else {
wp_die('Post creation failed, could not find original post: ' . $post_id);
}
}
add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' );
/*
* Add the duplicate link to action list for post_row_actions
*/
function rd_duplicate_post_link( $actions, $post ) {
if (current_user_can('edit_posts')) {
$actions['duplicate'] = '<a href="' . wp_nonce_url('admin.php?action=rd_duplicate_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate</a>';
}
return $actions;
}
add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
##add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
### Edn post dublicate
Плагин постинга на стену VK, в ленту Телеграм и импорт со стены VK
Установка плагина
За основу взят пример плагина Димона за что ему премного благодарен
В размещении ../wp_content/plugins/ создать папку wp-vk и в ней создать файл wp-vk.php с содержимым:
<?php
/**
* Plugin Name: vkcom_vk_autopost
* Description: Постинг на стену VK, в Телеграм и импорт со стены VK
*/
// Создание поста из вк
add_action('wp_ajax_postgen', 'postgen');
// Запуск автопостинга при публикации нового WP-поста.
#add_action('publish_post', 'vkcom_vk_publish_new');
// Запуск автопостинга по команде VK
add_action('wp_ajax_vkcom_vk', 'vkcom_vk_ajax');
// Запуск автопостинга по команде Telegram
add_action('wp_ajax_telegram_ajax', 'telegram_ajax');
// Добавление диалога плагина в редактирование WP-поста.
add_action('admin_init', 'vkcom_vk_box', 1);
// функция создания поста
function postgen()
{
//если открытые записи - достаточно сервис токена
$access_token="MYKEY";
// Берем ID редактируемого WP-поста.
$vk_post_id = $_REQUEST['vk_post_id'];
$owner_id = '-'.$_REQUEST['owner_id'];
$wall = file_get_contents('https://api.vk.com/method/wall.get?owner_id='.$owner_id.'&count=40&v=5.130&access_token='.$access_token.' ');
$posts = json_decode($wall, true)['response'];
//echo $wall;
$id = 0;
foreach($posts['items'] as $n)
if($n['id']==$vk_post_id) {
$img="no"; $video='';
$title = substr($n['text'],0,stripos($n['text'],PHP_EOL));
if(strlen($title)<5) $title = substr($n['text'],0,stripos($n['text'],'. '));
if(strlen($title)<5) $title="Title";
$content = substr($n['text'],stripos($n['text'],PHP_EOL),10000);
$content2=preg_replace("/\s?\[[^>]*?\|\s?/si", ' ',$content);
$content=preg_replace("/\]/", ' ',$content2);
if(strlen($content)<5) $Content=" ";
echo $video.'<h4>'.$title.'</h4><p>'.$content.' </p>';
$postarr = array(
'post_title' => $title,
'post_content' => $content,
'post_type' => 'post',//or whatever is your post type slug.
'post_status' => 'draft', //publish
'post_category' => array( 48 ),
'meta_input' => array(
//If you have any meta data, that will go here.
),
);
$insert_id = wp_insert_post($postarr, true);
echo $insert_id;
}
header("Location: http://".$_SERVER['HTTP_HOST']."/wp-admin/post.php?post=$insert_id&action=edit");
exit;
}
// Функция постинга в Телеграм
function wp_telegram($wp_post_id)
{
$CHATID='-ZZZZZZZZ';
$botid='MYBOTID';
// Получаем информацию по WP-посту.
$wp_post_url = get_permalink($wp_post_id);
$wp_post_arr = get_post($wp_post_id);
$wp_post_title = $wp_post_arr->post_title;
$wp_post_content_arr = get_extended($wp_post_arr->post_content);
$wp_post_desc =str_replace("\n", "", strip_tags($wp_post_content_arr['main']));
$telegram_text.='<b>'.$wp_post_title.'</b>'."\n".$wp_post_desc
."\n".'<a href="' . get_the_post_thumbnail_url( $wp_post_arr->ID, 'thumbnail' ) . '" >...</a>'
."\n".'<a href="'.$wp_post_url.'">Подробнее</a>'."\n";
$telegram = <<<TEXT
$telegram_text
TEXT;
$bot_url = "https://api.telegram.org/bot".$botid."/";
$url = $bot_url . 'sendMessage';
$post_fields = array('chat_id' => $CHATID,
'text' => $telegram,
'parse_mode' => 'HTML',
'disable_web_page_preview' => false,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type:multipart/form-data"));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($ch);
curl_close($ch);
}
// Функция автопостинга в ВК.
function vkcom_vk($wp_post_id,$gr_id)
{
// ID-номер стены юзера, куда надо постить.
$vk_user = $vk_group = $gr_id;
// Секретный ключ, который был получен для приложения VK.
$vk_token = 'MYKEY';
// Получаем информацию по WP-посту.
$wp_post_url = get_permalink($wp_post_id);
$wp_post_arr = get_post($wp_post_id);
$wp_post_title = $wp_post_arr->post_title;
$wp_post_content_arr = get_extended($wp_post_arr->post_content);
$wp_post_desc =str_replace("\n", "", strip_tags($wp_post_content_arr['main']));
// Формируем текст VK-поста.
$vk_text = $wp_post_title.'
'.$wp_post_desc;
// Если у WP-поста есть миниатюра.
if(($wp_post_image = get_post_thumbnail_id($wp_post_id)) > 0)
{
// Пытаемся получить массив для этой же картинки в большом размере.
if(is_array($wp_post_image = wp_get_attachment_image_src($wp_post_image, 'large' )))
{
// Получили, фоhмируем URL для этой картинки до нужного вида.
$wp_post_image = $_SERVER['DOCUMENT_ROOT'].substr($wp_post_image[0], strlen($_SERVER['SERVER_NAME'])+7);
}
else { unset($wp_post_image); }
}
// Иначе пробуем взять картинку из аттачей WP-поста.
elseif($wp_post_image = get_attached_media('image', $wp_post_id))
{
// Сокращаем массив, берем лишь первую картинку.
$wp_post_image = array_shift($wp_post_image);
if(mb_strlen($wp_post_image = $wp_post_image->guid))
{
// Взяли, фоhмируем URL для этой картинки до нужного вида.
$wp_post_image = $_SERVER['DOCUMENT_ROOT'].substr($wp_post_image, strlen($_SERVER['SERVER_NAME'])+7);
}
else { unset($wp_post_image); }
}
else { unset($wp_post_image); }
// Если изображение нашлось.
if(mb_strlen($wp_post_image))
{
// Узнаем VK-сервер, куда будем заливать изображение.
#user $ph_ser = json_decode(file_get_contents('https://api.vk.com/method/photos.getWallUploadServer?v=5.81&access_token='.$vk_token));
$ph_ser = json_decode(file_get_contents('https://api.vk.com/method/photos.getWallUploadServer?group_id='.$vk_group.'&v=5.81&access_token='.$vk_token));
// Заливаем изображение на VK-сервер.
$ph_upl = json_decode(curlPost($ph_ser->response->upload_url, $wp_post_image));
// Сохраняем изображение, как фото к VK-посту на стене.
#user $ph_sav = json_decode(file_get_contents('https://api.vk.com/method/photos.saveWallPhoto?user_id='.$vk_user.'&photo='.$ph_upl->photo.'&server='.$ph_upl->server.'&hash='.$ph_upl->hash.'&v=5.81&access_token='.$vk_token));
$ph_sav = json_decode(file_get_contents('https://api.vk.com/method/photos.saveWallPhoto?group_id='.$vk_group.'&photo='.$ph_upl->photo.'&server='.$ph_upl->server.'&hash='.$ph_upl->hash.'&v=5.81&access_token='.$vk_token));
// Узнаём id залитого изображения.
$ph_id = $ph_sav->response[0]->id;
}
// Начинаем формировать запрос для отправки VK-поста.
#user $st_zap = "https://api.vk.com/method/wall.post?owner_id=".$vk_user."&friends_only=0&message=".urlencode($vk_text)."&attachments=";
$st_zap = 'https://api.vk.com/method/wall.post?owner_id=-'.$vk_group.'&friends_only=0&from_group=1&message='.urlencode($vk_text).'&attachments=';
// Если изображение было загружено, то добавляем его в запрос.
if(mb_strlen($ph_id)) { $st_zap .= 'photo'.$ph_sav->response[0]->owner_id.'_'.$ph_id.','; }
// Добавляем URL на WP-пост.
// если добавлять, то VK не рейтингует пост
# $st_zap .= $wp_post_url;
// Дополнительный постинг в другие социальные сети.
//$st_zap .= '&services=twitter,facebook';
// Завершаем формировать запрос.
//5.37ap .= '&v=5.81&access_token='.$vk_token;
// Отправляем сформированный запрос в VK.
$st_1 = str_replace(' ', '%20', $st_zap);
// json_decode(file_get_contents(str_replace(' ', '%20', $st_zap)));
$st_res = json_decode(file_get_contents(str_replace(' ', '%20', $st_zap)));
// Узнаём ID опубликованного VK-поста.
$st_id = $st_res->response->post_id;
// Если все ок.
if(mb_strlen($st_id)>1)
{
// Добавяем в WP ссылку на VK-пост.
add_post_meta($wp_post_id, 'vkcom_vk_link', $vk_user.'_'.$st_id);
// Добавяем в WP ссылку на изображение VK-поста.
add_post_meta($wp_post_id, 'vkcom_vk_photo', $ph_id);
}
}
// Функция запуска автопостинга при публикации в WP нового поста.
function vkcom_vk_publish_new($wp_post_id)
{
// Если WP-пост опубликован.
if(($_POST['post_status'] == 'publish') && ($_POST['original_post_status'] != 'publish'))
{
// Пытаемся получить из WP ссылку на VK-пост.
$test = get_post_meta($wp_post_id, 'vkcom_vk_link');
// Если ссылка не найдена.
if(count($test) == 0)
{
// Получаем Unix-метку времени WP-поста с поправкой на временную зону GTM.
$wp_post_time = get_post_time('U', true, $wp_post_id);
$wp_post_time_plus = $wp_post_time + 60*60*24*2; // двое суток.
// Если WP-пост новый. WP-посты, публикуемые задним числом, игнорируем.
if($wp_post_time_plus > current_time('timestamp'))
{
// Запуск автопостинга.
vkcom_vk($wp_post_id);
}
}
}
}
// Функция запуска автопостинга по команде.
function vkcom_vk_ajax()
{
// Берем ID редактируемого WP-поста.
$wp_post_id = $_REQUEST['post_id'];
$gr_id = $_REQUEST['gr_id'];
// Если WP-пост опубликован.
if(get_post_status($wp_post_id) == 'publish')
{
// Запуск автопостинга.
vkcom_vk($wp_post_id,$gr_id);
}
header("Location: http://".$_SERVER['HTTP_HOST']."/wp-admin/admin.php?page=To_social_repost");
// post.php?post=".$wp_post_id."&action=edit");
exit;
}
// Функция запуска автопостинга по команде Telegr
function telegram_ajax()
{
// Берем ID редактируемого WP-поста.
$wp_post_id = $_REQUEST['post_id'];
// Если WP-пост опубликован.
if(get_post_status($wp_post_id) == 'publish')
{
// Запуск автопостинга.
wp_telegram($wp_post_id);
}
header("Location: http://".$_SERVER['HTTP_HOST']."/wp-admin/admin.php?page=To_social_repost");
// post.php?post=".$wp_post_id."&action=edit");
exit;
}
// Функции диалога плагина в редактирование WP-поста.
function vkcom_vk_box()
{
add_meta_box('vkcom_vk_box', 'vkcom_vk_autopost', 'vkcom_vk_box_inner', 'post', 'side');
}
function vkcom_vk_box_inner($post)
{
$vkcom_vk_box_link = get_post_meta($post->ID, 'vkcom_vk_link');
$vkcom_vk_box_image = get_post_meta($post->ID, 'vkcom_vk_photo');
if(count($vkcom_vk_box_link) > 0)
{
echo '<p>Существующие VK-записи <strong>('.count($vkcom_vk_box_link).'):</strong></p>';
$i=0;
while($i < count($vkcom_vk_box_link))
{
echo '<p><a target="_blank" href="//vk.com/wall'.$vkcom_vk_box_link[$i].'">Пост</a>';
if(mb_strlen($vkcom_vk_box_image[$i]>1))
{
echo ' (<a target="_blank" href="//vk.com/photo'.get_option('vkcom_vk_opt_gid').'_'.$vkcom_vk_box_image[$i].'">изображение</a>)';
}
echo '</p>';
$i++;
}
}
else
{
echo '<p>Постов в VK не было!</p>';
}
$link = admin_url('admin-ajax.php?action=vkcom_vk&post_id='.$post->ID);
if(get_post_status($post->ID)=='publish')
{
echo '<a href="'.$link.'" id="vkcomvk" class="button button-primary button-large">Запостить в VK!</a>';
}
}
// Функция cURL (вспомогательная)
function curlPost($url, $img)
{
if(!isset($url) || !isset($img))
{
return false;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
# curl_setopt($ch, CURLOPT_POSTFIELDS, array('file1' => new CurlFile($img)));
if (class_exists('\CURLFile')) {
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file1' => new CURLFile($img)));
} else {
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file1' => "@$img"));
}
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
?>
Использование функции постинга в ВК
(Я выключил функцию автопостинга, так как никогда с первого раза невозможно сделать пост правильно )
Вставить куда-то в страницу админки:
echo ' <a href="'.admin_url('admin-ajax.php?action=vkcom_vk&post_id='.$post->ID.'&gr_id=[GROUP_ID]').'" id="vkcomvk" class="button button-primary button-large">Запостить в VK</a>';
,где требуется указать GROUP_ID группы, где Ваше приложение имеет права
Использование функции постинга в Телеграм
Вставить куда-то в страницу админки:
echo '<a href="'.admin_url('admin-ajax.php?action=telegram_ajax&post_id='.$post->ID) .'" id="telegram_send" class="button button-primary button-large">Запостить в Telegram</a>';
Использование функции импорта из ВК:
Вставить куда-то в страницу админки создав путем добавления функционала:
$posts2 = [];
#стена
$owner_id = ["-GROUD_ID_1", "-GROUD_ID_2" ];
date_default_timezone_set('Europe/Moscow');
echo '<br />Новости в группах на '; echo date('d-M H:i');
#если открытые записи - достаточно сервис токена
$access_token="SERVICE_KEY";
foreach($owner_id as $gr)
{
$g_name_r = file_get_contents('https://api.vk.com/method/groups.getById?group_id='.abs($gr).'&v=5.130&access_token='.$access_token.' ');
$g_name_j = json_decode($g_name_r, true)['response'];
foreach($g_name_j as $n) { $g_name = $n['screen_name']; }
$wall = file_get_contents('https://api.vk.com/method/wall.get?owner_id='.$gr.'&count=15&v=5.130&access_token='.$access_token.' ');
$posts = json_decode($wall, true)['response'];
foreach($posts['items'] as $n) {
$img="no"; $video='';
foreach($n['attachments'] as $item) {
$video = $item['video']['title'].'<br />';
foreach ($item['video']['image'] as $pic_size)
$img=$pic_size['url'];
foreach ($item['photo']['sizes'] as $pic_size)
$img=$pic_size['url'];
}
# $content = mb_strimwidth($n['text'], 0, 2350, "...");
$title = substr($n['text'],0,stripos($n['text'],PHP_EOL));
if(strlen($title)<5) $title = substr($n['text'],0,stripos($n['text'],'. '));
if(strlen($title)<5) $title="###";
$content = substr($n['text'],stripos($n['text'],PHP_EOL),10000);
$posturl='https://vk.com/public'.abs($gr).'?w=wall'.$gr.'_'.$n['id'];
$postdate = $n['date'];
$posts2[$postdate]['owner_id'] = $gr;
$posts2[$postdate]['g_name'] = $g_name;
$posts2[$postdate]['post_id'] = $n['id'];
$posts2[$postdate]['img'] = $img;
$posts2[$postdate]['title'] = $title;
$posts2[$postdate]['content'] = $content;
$posts2[$postdate]['date'] = $postdate;
$posts2[$postdate]['img'] = $img;
$posts2[$postdate]['video'] = $video;
}
}
krsort($posts2);
foreach($posts2 as $p) {
$posturl='https://vk.com/public'.abs($p['owner_id']).'?w=wall'.$p['owner_id'].'_'.$p['post_id'];
$content2=preg_replace("/\s?\[[^>]*?\|\s?/si", ' ',$p['content']);
$content2=preg_replace("/\]/", ' ',$content2);
echo '<br /><hr><h3><u>'.$p['g_name'].'</u> > <i>'.date('d-M H:i', $p['date']).' </i>>
'.$p['title'].'</h3>
<img src="'.$p['img'].'" alt="" width=200 >
'.$p['video'].' '.$content2.' <br />
<a href="'.admin_url('admin-ajax.php?action=postgen&owner_id='.abs($p['owner_id']).'&vk_post_id='.$p['post_id'])
.'" id="WP_post_create" class="button button-primary button-large">Создать пост WP</a>
<a href="'.$posturl.'">'.$posturl.'</a> ';
}
Покажет посты в нескольких группах с обратной сортировкой по времени - такой агрегатор открытых групп
Параметры NGINX
Основные параметры конфигурации NGINX для WordPress
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
Lisolog / 2023
