• Как поменять ссылки во всех галерях?

    @Gregpopov
    Full stack web developer
    Найдите настройку в таблице, напишите запрос на UPDATE, и все готово.
    Ответ написан
    Комментировать
  • Как поменять ссылки во всех галерях?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Не могу найти где это хранится

    Вместе с содержимым записей и страниц в таблице wp_posts в поле post_content. Поэтому, можете либо заменить там, либо переопределить вывод галерей с помощью фильтра post_gallery:
    function dco_post_gallery($output, $attr, $instance) {
    	$html5 = current_theme_supports( 'html5', 'gallery' );
    	$atts = shortcode_atts( array(
    		'order'      => 'ASC',
    		'orderby'    => 'menu_order ID',
    		'id'         => $post ? $post->ID : 0,
    		'itemtag'    => $html5 ? 'figure'     : 'dl',
    		'icontag'    => $html5 ? 'div'        : 'dt',
    		'captiontag' => $html5 ? 'figcaption' : 'dd',
    		'columns'    => 3,
    		'size'       => 'thumbnail',
    		'include'    => '',
    		'exclude'    => '',
    		'link'       => ''
    	), $attr, 'gallery' );
    
    	$id = intval( $atts['id'] );
    
    	if ( ! empty( $atts['include'] ) ) {
    		$_attachments = get_posts( array( 'include' => $atts['include'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
    
    		$attachments = array();
    		foreach ( $_attachments as $key => $val ) {
    			$attachments[$val->ID] = $_attachments[$key];
    		}
    	} elseif ( ! empty( $atts['exclude'] ) ) {
    		$attachments = get_children( array( 'post_parent' => $id, 'exclude' => $atts['exclude'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
    	} else {
    		$attachments = get_children( array( 'post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
    	}
    
    	if ( empty( $attachments ) ) {
    		return '';
    	}
    
    	if ( is_feed() ) {
    		$output = "\n";
    		foreach ( $attachments as $att_id => $attachment ) {
    			$output .= wp_get_attachment_link( $att_id, $atts['size'], true ) . "\n";
    		}
    		return $output;
    	}
    
    	$itemtag = tag_escape( $atts['itemtag'] );
    	$captiontag = tag_escape( $atts['captiontag'] );
    	$icontag = tag_escape( $atts['icontag'] );
    	$valid_tags = wp_kses_allowed_html( 'post' );
    	if ( ! isset( $valid_tags[ $itemtag ] ) ) {
    		$itemtag = 'dl';
    	}
    	if ( ! isset( $valid_tags[ $captiontag ] ) ) {
    		$captiontag = 'dd';
    	}
    	if ( ! isset( $valid_tags[ $icontag ] ) ) {
    		$icontag = 'dt';
    	}
    
    	$columns = intval( $atts['columns'] );
    	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
    	$float = is_rtl() ? 'right' : 'left';
    
    	$selector = "gallery-{$instance}";
    
    	$gallery_style = '';
    
    	/**
    	 * Filters whether to print default gallery styles.
    	 *
    	 * @since 3.1.0
    	 *
    	 * @param bool $print Whether to print default gallery styles.
    	 *                    Defaults to false if the theme supports HTML5 galleries.
    	 *                    Otherwise, defaults to true.
    	 */
    	if ( apply_filters( 'use_default_gallery_style', ! $html5 ) ) {
    		$gallery_style = "
    		<style type='text/css'>
    			#{$selector} {
    				margin: auto;
    			}
    			#{$selector} .gallery-item {
    				float: {$float};
    				margin-top: 10px;
    				text-align: center;
    				width: {$itemwidth}%;
    			}
    			#{$selector} img {
    				border: 2px solid #cfcfcf;
    			}
    			#{$selector} .gallery-caption {
    				margin-left: 0;
    			}
    			/* see gallery_shortcode() in wp-includes/media.php */
    		</style>\n\t\t";
    	}
    
    	$size_class = sanitize_html_class( $atts['size'] );
    	$gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>";
    
    	/**
    	 * Filters the default gallery shortcode CSS styles.
    	 *
    	 * @since 2.5.0
    	 *
    	 * @param string $gallery_style Default CSS styles and opening HTML div container
    	 *                              for the gallery shortcode output.
    	 */
    	$output = apply_filters( 'gallery_style', $gallery_style . $gallery_div );
    
    	$i = 0;
    	foreach ( $attachments as $id => $attachment ) {
    
    		$attr = ( trim( $attachment->post_excerpt ) ) ? array( 'aria-describedby' => "$selector-$id" ) : '';
    		$image_output = wp_get_attachment_link( $id, $atts['size'], false, false, false, $attr );
    		$image_meta  = wp_get_attachment_metadata( $id );
    
    		$orientation = '';
    		if ( isset( $image_meta['height'], $image_meta['width'] ) ) {
    			$orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
    		}
    		$output .= "<{$itemtag} class='gallery-item'>";
    		$output .= "
    			<{$icontag} class='gallery-icon {$orientation}'>
    				$image_output
    			</{$icontag}>";
    		if ( $captiontag && trim($attachment->post_excerpt) ) {
    			$output .= "
    				<{$captiontag} class='wp-caption-text gallery-caption' id='$selector-$id'>
    				" . wptexturize($attachment->post_excerpt) . "
    				</{$captiontag}>";
    		}
    		$output .= "</{$itemtag}>";
    		if ( ! $html5 && $columns > 0 && ++$i % $columns == 0 ) {
    			$output .= '<br style="clear: both" />';
    		}
    	}
    
    	if ( ! $html5 && $columns > 0 && $i % $columns !== 0 ) {
    		$output .= "
    			<br style='clear: both' />";
    	}
    
    	$output .= "
    		</div>\n";
    
    	return $output;
    }
    
    add_filter('post_gallery', 'dco_post_gallery', 10, 3);
    Ответ написан
    Комментировать
  • Почему не работает передача массива через POST?

    kpa6uu
    @kpa6uu
    Программист Талибана [Пыхерский Алибаба]
    Можете сократить код, используя вот такую замечательную конструкцию:
    <?=$_POST['company']?>

    Для разбора ошибки скиньте html полученной формы, может накосячили с кавычками.
    Ответ написан
    3 комментария
  • Почему не запускается MySQL?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Прежде всего, сделайте сейчас копию файлов баз данных куда-нибудь.
    Выключите приложение, подключающееся к вашей базе.

    Попробуйте (имея копию файлов) запустить MySQL в режиме innodb_force_recovery, чтобы он всё-таки аварийно (ничего не проверяя) запустился, и вы могли снять дамп данных.
    Добавьте в my.cnf в секцию [mysqld]:
    innodb_force_recovery = 1
    и запустите MySQL.

    Если не помогло - читайте, что делает следующая цифра и ставьте её. Почитать про каждый уровень можно здесь:
    dev.mysql.com/doc/refman/5.7/en/forcing-innodb-rec...
    Имейте ввиду, что поднимать уровень нужно только при наличии файловой копии баз данных, поскольку они почти наверняка могут повредить данные.

    На всякий случай, добавьте в ту же секцию:
    innodb_purge_threads=0

    Если MySQL запустился, снимайте дамп всех критичных таблиц.
    Чтобы узнать, какая именно таблица стопила весь процесс, запустите mysqlcheck --all-databases. Те таблицы, что напишут "Corrupted", надо дампнуть и после всей этой канители переразвернуть с дампа заново.

    Не оставляйте этот режим на продакшене.
    Ответ написан
    3 комментария
  • Как задать пользователя для cron?

    romy4
    @romy4
    Exception handler
    crontab -u username -e
    Ответ написан
    Комментировать
  • Как задать пользователя для cron?

    @Nc_Soft
    Юзера можно задать в глобальном кроне /etc/crontab
    * * * * * root /usr/bin/php /usr/local/www/db_request/misc/test.php
    Либо сделать для юзера системы свой крон через crontab -e
    Ответ написан
    Комментировать
  • Почему переадресовывается на несуществующую страницу?

    eZhrv
    @eZhrv
    Growth Hacking, Agile marketing, A/B testing
    По моим ощущениям - Вас взломали. Может я ошибаюсь.
    Жаль Вы без VCS работали. Всё было бы проще.

    В любом случае,
    Я бы на Вашем месте, выкачал весь сегодняшний код на локалку, и начал искать по исходникам.
    С помощью IDE (в них как правило поиск по файлам проекта быстрее из-за индексации)
    Преимущественно в папке шаблона искал бы сначала.

    Начать поиск можно примерно с таких функций:
    is_user_logged_in
    is_admin
    current_user_can
    is_super_admin

    Потом куда мысль заведёт.

    После тысячи неудачных попыток, можно пройтись каким-нибудь Manul'ом по исходникам.
    https://yandex.ru/promo/manul#about
    Ответ написан
    1 комментарий
  • Как правильно пропарсить XML через Xpath?

    @throughtheether
    human after all
    Не вполне ясно, что именно вы хотите получить (хотя бы на примере вашего тестового XML).
    Выражение вида
    //street[@street="baker street"]/house[@house="221B"]/appartment
    должно выбрать все квартиры указанного дома на указанного улице. Если нужны номера, то добавьте в конец /@appartment.

    Apartment, кстати. И представляется излишним дублирование имен нод именами атрибутов.

    Можно ли через x-path выбрать дом, где атрибут = чему-то, который находтся в теге улица, где атрибут = чему-то....
    При помощи оси ancestor или, если родство непосредственное, parent.
    Ответ написан
    Комментировать
  • Натуральная сортировка многомерного массива?

    У вас с синтаксисом дерева ошибка.
    Если массивы с домами это
    $array[1], $array[2], $array[3], то в цикле обойдите из и сделайте sort($array[$i])
    Ответ написан
    4 комментария
  • Вывод pdf из MySQL?

    mramor
    @mramor
    нечего о себе рассказывать.
    Никогда таким не заморачивался, потому не уверен в своем ответе.
    получается файл pdf.pdf с размером 0 байт.

    попробуйте еще добавить хедер на размер:
    header('Content-Length: '.strlen($row['bill']));

    возьмите вручную из поля значение и сохраните в пдф, может лежащий там файл поврежден сам по себе.
    Ответ написан
    1 комментарий
  • Вывод pdf из MySQL?

    Как принятно на русских ресурсах не отвечать на вопрос, а давай советы :) Но в этот раз совет важный и даже юзабельный.

    Хранить файл в БД - плохо. Может показаться, что это удобно (например, только бэкап БД спасет всех).

    Но на самом деле:
    • Растет размер БД. Что делать, если он станет запредельным из-за сохраненных там файлов?
    • Возрастает нагрузка на диски/оперативную память сервера БД.
    • Офигенно растут логи, а это дополнительная нагрузка на диск.
    • Замедлится передача данных от MySQL, т.к. там, во-первых, может быть сеть со своей пропускной способностью, а во-вторых, MySQL будет передавать большой файл маленькими частями (снова оверхед на I/O диска и сети).
    • То, что можно отдать обычным nginx'ом как статику, отдается через костыли.

    Хранить блобы можно, конечно, но рано или поздно сделаете БД узким местом. Если и хранить блобы, то очень-очень маленькие, но и даже это спорно и зависит от задачи.

    Поэтому отказывайтесь от идеи.

    Просто в этих пдфках содержаться персональные данные пользователей и нельзя чтобы они имели прямые ссылки(доступ к ним открывается только после авторизации)

    Причем здесь БД? Храните файл в том месте, которое не сервится наружу. А доступ до файла регулируйте при запросе. То есть у вас есть какой-то url для файла, там содержится его id, например. Вы проводите авторизацию: если можно забрать файл, спрашиваете у БД ссылку, где он находится на диске (а это место наружу не видно), и отдаете файл подобным образом, как делаете сейчас. НО, если ожидаются крупные файлы, читать файл нужно по частям, иначе можете закончить оперативу. В фреймворках обычно есть для этого инструменты, кстати.
    Ответ написан
    3 комментария
  • После обновления Wordpress пропал визуальный редактор?

    CodeByZen
    @CodeByZen
    php, js, my/mssql, sqlite, html, css, it-consult
    Что именно перепробовал?
    Попробуй с другого браузера. Почисти кеш в браузере, посмотри в фаербаге или chrome dev tools какие файлы с 404 статусом грузятся.
    Ответ написан
  • Работает ли pg_escape_string?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не надо ничего проверять. Это твой код не работает, а встроенные функции работают всегда. Всё экранируется.
    Не надо использовать pg_escape_string. Надо использовать pg_query_params и подготовленные выражения.

    Сами же твои вопросы дурацкие.
    Если ты дашь себе труд хоть немного подумать, то, разумеется, сможешь ответть себе на вопрос,
    как проверить результат работу той или иной функции
    и почему ты в БД не видишь никакого экранирования
    Ответ написан
    3 комментария
  • Обмен данными сайта с 1с в режиме онлайн?

    @VasiliyKudryavtsev
    Начиная с версии 8.3.5 есть аж две возможности:

    v8.1c.ru/o7/201312rest - не требует программирования в 1С

    v8.1c.ru/o7/201312http - требует программирования на стороне конфигурации
    Ответ написан
    Комментировать
  • Возврат данных cURL в виде массива?

    qfox
    @qfox
    Ответы есть у меня
    Вам нужна сериализация и десериализация данных.

    Serialize+unserialize
    json_encode+json_decode
    etc.

    Т.е., в скрипте 1 вместо `echo $out` вы делаете `json_decode($out);`.
    А в скрипте 2 вместо `var_export($arr);` делаете `echo json_encode($arr);`.

    Не забудьте завернуть сообщения об ошибках в скрипте 2 в такой же json, чтобы в скрипте 1 делать меньше телодвижений. Т.е. сделайте так, чтобы скрипт 2 всегда возвращал json.

    Т.е., вместо:
    if (!$dbconn) {
      echo "Произошла ошибка подключения к базе.";
    }

    Нужно
    if (!$dbconn) {
      echo json_encode(["error" => "Произошла ошибка подключения к базе."]);
    }
    Ответ написан
    2 комментария
  • Обмен данных между php-скриптами на разных серверах?

    Почитайте про promise , это на мой взгляд будет лучшим решением для вас. Так же есть реализация на jQuery. В любом случаи у вас будет последовательность обращений.
    Ответ написан
    Комментировать
  • Обмен данных между php-скриптами на разных серверах?

    @IceJOKER
    Web/Android developer
    А в чем проблема-то?
    отправляете POST\GET... запрос , другой принимает запрос, выполняет все что нужно и возвращает ответ
    Ответ написан
    Комментировать
  • Обмен данными сайта с 1с в режиме онлайн?

    riv82
    @riv82
    Программист
    Проще всего будет сделать периодическую выгрузку из 1с на какую-то базу данных которая доступна сайту.
    Ответ написан
    Комментировать
  • Пропадает символ \ при парсинге csv?

    ILoveYAnny
    @ILoveYAnny
    Я могу быть не прав, но мне кажется PHP принимает это за символ экранирования. Попробуй указать экранирование перед символом \ , возможно есть другие способы указать, что это не символ экранироания, а символьный текст. Мб указать кавычками.
    Ответ написан
    4 комментария
  • Наезжают маркеры списка в IE?

    swipeshot
    @swipeshot
    Учусь на ошибках.
    Во-первых, это же IE
    Во-вторых, подключите reset.css
    Ответ написан
    4 комментария