• Как убрать неразрывные пробелы в Wordpress (не в TinyMCE)?

    Shigaev
    @Shigaev Автор вопроса
    Я Алень. Сам над собой топорик подвесил: когда-то закинул в футер скрипт, в котором был обязательный ­ (\u00AD). Теперь прибил скрипт и всё заиграло. Сначала вообще грешил на замечательный плагин WP-Typography...
    Написано
  • Как в Wordpress оставить посты определённых форматов в лентах, но скрыть упоминания таких постов в пагинации для single и page?

    Shigaev
    @Shigaev Автор вопроса
    Артем Золин, я и сам уже не помню — по какой причине выбрал пагинатор Тимура. Помню только, что выбирал из многих и его вроде бы был наиболее накиданный фишечками.
    Написано
  • Как в Wordpress оставить посты определённых форматов в лентах, но скрыть упоминания таких постов в пагинации для single и page?

    Shigaev
    @Shigaev Автор вопроса
    Роман Страх, /template-parts/content

    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    	<header class="entry-header">
    		<?php
    		if ( is_singular() ) :
    			the_title( '<h1 class="entry-title">', '</h1>' );
    		else :
    			the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' );
    		endif;
    
    		if ( 'post' === get_post_type() ) :
    			?>
    			<div class="entry-meta">
    				<?php
    				halo_halo_halo_posted_on();
    				halo_halo_halo_posted_by();
    				?>
    			</div><!-- .entry-meta -->
    		<?php endif; ?>
    	</header><!-- .entry-header -->
    
    	<?php halo_halo_halo_post_thumbnail(); ?>
    
    	<div class="entry-content">
    		<?php
    		the_content(
    			sprintf(
    				wp_kses(
    					/* translators: %s: Name of current post. Only visible to screen readers */
    					__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'halo-halo-halo' ),
    					array(
    						'span' => array(
    							'class' => array(),
    						),
    					)
    				),
    				wp_kses_post( get_the_title() )
    			)
    		);
    
    		wp_link_pages(
    			array(
    				'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'halo-halo-halo' ),
    				'after'  => '</div>',
    			)
    		);
    		?>
    	</div><!-- .entry-content -->
    
    	<footer class="entry-footer">
    		<?php halo_halo_halo_entry_footer(); ?>
    		
    	</footer><!-- .entry-footer -->	
    
    </article><!-- #post-<?php the_ID(); ?> -->
    Написано
  • Как в Wordpress оставить посты определённых форматов в лентах, но скрыть упоминания таких постов в пагинации для single и page?

    Shigaev
    @Shigaev Автор вопроса
    Предоставить код шаблона я затруднюсь — оперирую регистрацией форматов:
    add_theme_support( 'post-formats', array( 'aside', 'gallery', 'chat', 'link', 'image', 'quote', 'status', 'video', 'audio' ) );
    . Подскажите — что ещё нужно добавить и откуда скопировать. Что до кода пагинации, то я использую одну из его вариаций — «Kama Pagenavi»:

    function kama_pagenavi( $args = [], $wp_query = null ){
    	// параметры по умолчанию
    	$default = [
    		'before'          => '',   // Текст до навигации.
    		'after'           => '',   // Текст после навигации.
    		'echo'            => true, // Возвращать или выводить результат.
    		'text_num_page'   => '',           // Текст перед пагинацией.
    		// {current} - текущая.
    		// {last} - последняя (пр: 'Страница {current} из {last}' получим: "Страница 4 из 60").
    		'num_pages'       => 3,           // Сколько ссылок показывать.
    		'step_link'       => 100,           // Ссылки с шагом (если 10, то: 1,2,3...10,20,30. Ставим 0, если такие ссылки не нужны.
    		'dotright_text'   => '',          // Промежуточный текст "до".
    		'dotright_text2'  => '',          // Промежуточный текст "после".
    		'back_text'       => '<',    // Текст "перейти на предыдущую страницу". Ставим 0, если эта ссылка не нужна.
    		'next_text'       => '>',   // Текст "перейти на следующую страницу".  Ставим 0, если эта ссылка не нужна.
    		'first_page_text' => '|<', // Текст "к первой странице".    Ставим 0, если вместо текста нужно показать номер страницы.
    		'last_page_text'  => '>|',  // Текст "к последней странице". Ставим 0, если вместо текста нужно показать номер страницы.
    	];
    	// Cовместимость с v2.5: kama_pagenavi( $before = '', $after = '', $echo = true, $args = array() )
    	$fargs = func_get_args();
    	if( $fargs && is_string( $fargs[0] ) ){
    		$default['before'] = isset($fargs[0]) ? $fargs[0] : '';
    		$default['after']  = isset($fargs[1]) ? $fargs[1] : '';
    		$default['echo']   = isset($fargs[2]) ? $fargs[2] : true;
    		$args              = isset($fargs[3]) ? $fargs[3] : array();
    		$wp_query = $GLOBALS['wp_query']; // после определения $default!
    	}
    	if( ! $wp_query ){
    		wp_reset_query();
    		global $wp_query;
    	}
    	if( ! $args ){
    		$args = [];
    	}
    	if( $args instanceof WP_Query ){
    		$wp_query = $args;
    		$args = [];
    	}
    	/**
    	 * Позволяет установить параметры по умолчанию.
    	 * @param array $default_args
    	 */
    	$default = apply_filters( 'kama_pagenavi_args', $default );
    	$rg = (object) array_merge( $default, $args );
    	$paged = (int) $wp_query->get( 'paged' ) ?: 1;
    	$max_page = $wp_query->max_num_pages;
    	// navigation no needed
    	if( $max_page < 2 ){
    		return '';
    	}
    	$start_page = $paged - $half_page_start; // первая страница
    	$end_page   = $paged + $half_page_end;   // последняя страница (условно)
    	$pages_to_show = (int) $rg->num_pages;
    	$pages_to_show_minus_1 = $pages_to_show-1;
    	$half_page_start = floor( $pages_to_show_minus_1 / 2 ); // сколько ссылок до текущей страницы
    	$half_page_end   = ceil(  $pages_to_show_minus_1 / 2 ); // сколько ссылок после текущей страницы
    
    	if( $start_page <= 0 ){
    		$start_page = 1;
    	}
    	if( ( $end_page - $start_page ) != $pages_to_show_minus_1 ){
    		$end_page = $start_page + $pages_to_show_minus_1;
    	}
    	if( $end_page > $max_page ){
    		$start_page = $max_page - $pages_to_show_minus_1;
    		$end_page = (int) $max_page;
    	}
    	if( $start_page <= 0 ){
    		$start_page = 1;
    	}
    	// создаём базу чтобы вызвать get_pagenum_link один раз
    	$link_base = str_replace( PHP_INT_MAX, '___', get_pagenum_link( PHP_INT_MAX ) );
    	$first_url = get_pagenum_link( 1 );
    	if( false === strpos( $first_url, '?' ) ){
    		$first_url = user_trailingslashit( $first_url );
    	}
    	// собираем елементы
    	$els = [];
    	if( $rg->text_num_page ){
    		$rg->text_num_page = preg_replace( '!{current}|{last}!', '%s', $rg->text_num_page );
    		$els['pages'] = sprintf( '<span class="pages">' . $rg->text_num_page . '</span>', $paged, $max_page );
    	}
    
    	// в начало
    	if( $start_page >= 2 && $pages_to_show < $max_page ){
    		$els['first'] = '<a class="first" href="' . $first_url . '">' . ( $rg->first_page_text ?: 1 ) . '</a>';
    		if( $rg->dotright_text && $start_page !== 2 ){
    			$els[] = '<span class="extend">' . $rg->dotright_text . '</span>';
    		}
    	}
    	
    	// назад
    	if( $rg->back_text && $paged !== 1 ){
    		$els['prev'] = '<a class="prev" href="' . ( ( $paged - 1 ) == 1 ? $first_url : str_replace( '___', ( $paged - 1 ), $link_base ) ) . '">' . $rg->back_text . '</a>';
    	}
    	
    	// пагинация
    	for( $i = $start_page; $i <= $end_page; $i++ ){
    		if( $i === $paged ){
    			$els['current'] = '<span class="current">' . $i . '</span>';
    		}
    		elseif( $i === 1 ){
    			$els[] = '<a href="' . $first_url . '">1</a>';
    		}
    		else{
    			$els[] = '<a href="' . str_replace( '___', $i, $link_base ) . '">' . $i . '</a>';
    		}
    	}
    	// ссылки с шагом
    	$dd = 0;
    	if( $rg->step_link && $end_page < $max_page ){
    		for( $i = $end_page + 1; $i <= $max_page; $i++ ){
    			if( 0 === ( $i % $rg->step_link) && $i !== $rg->num_pages ){
    				if( ++$dd === 1 ){
    					$els[] = '<span class="extend">' . $rg->dotright_text2 . '</span>';
    				}
    				$els[] = '<a href="' . str_replace( '___', $i, $link_base ) . '">' . $i . '</a>';
    			}
    		}
    	}
    
    	// вперед
    	if( $rg->next_text && $paged !== $end_page ){
    		$els['next'] = sprintf( '<a class="next" href="%s">%s</a>',
    			str_replace( '___', ( $paged + 1 ), $link_base ),
    			$rg->next_text
    		);
    	}
    
    	// в конец
    	if( $end_page < $max_page ){
    		if( $rg->dotright_text && $end_page !== ( $max_page - 1 ) ){
    			$els[] = '<span class="extend">' . $rg->dotright_text2 . '</span>';
    		}
    		$els['last'] = sprintf( '<a class="last" href="%s">%s</a>',
    			str_replace( '___', $max_page, $link_base ),
    			$rg->last_page_text ?: $max_page
    		);
    	}
    
    	/**
    	 * Allow to change pagenavi elements.
    	 * @param array $elements
    	 */
    	$els = apply_filters( 'kama_pagenavi_elements', $els );
    	$html = $rg->before . '<div class="wp-pagenavi">' . implode( '', $els ) . '</div>' . $rg->after;
    	/**
    	 * Allow to change final output HTML code of pagenavi.
    	 * @param array $html
    	 */
    	$html = apply_filters( 'kama_pagenavi', $html );
    	if( ! $rg->echo ){
    		return $html;
    	}
    	echo $html;
    }


    Вызов такой: <?php kama_pagenavi(); ?>
    Написано
  • Как в Wordpress оставить посты определённых форматов в лентах, но скрыть упоминания таких постов в пагинации для single и page?

    Shigaev
    @Shigaev Автор вопроса
    Виноват, но не срабатывает. Вижу что всё логично, но ссылка пагинации по-прежнему остаётся и, соответственно, отображение поста формата всё ещё присутствует. В чём может быть проблема?
    Написано
  • Как добавить, изменить или удалить те или иные элементы относительно формата поста Wordpress?

    Shigaev
    @Shigaev Автор вопроса
    maksam07, только за 2023 я оплатил двадцать восемь IT-проектов и без счёта доработок. Уверяю вас — халява не моё. Мой запрос скорее разминка для программиста, чем глобальный оверсайз.
    Написано
  • Как убрать неразрывные пробелы в Wordpress (не в TinyMCE)?

    Shigaev
    @Shigaev Автор вопроса
    Refguser, я здесь как раз для того, чтобы понять — что я делаю не так. Подскажешь?
    Написано
  • Как убрать неразрывные пробелы в Wordpress (не в TinyMCE)?

    Shigaev
    @Shigaev Автор вопроса
    Refguser, ничего не приходится делать. Оно само :))

    Я пытаюсь добавить переносы во все текстовые области: hyphens:auto; пока хватает. Но рандомные добавки &nbsp; между слов в заголовках h1 — это уже критично. Они растягиваются и выходят за пределы блоков. Какая-нибудь «ЭНДОСКОПИЧЕСКАЯ РЕТРОГРАДНАЯ ХОЛАНГИОПАНКРЕАТОГРАФИЯ» рушит всё. Разумеется, в первую очередь экраны мобилок.

    Временно решил победить при помощи <wbr>. Что конечно костыль. Но хотя бы так.
    Написано
  • Как правильно расставить скобки при ошибке установки плагина?

    Shigaev
    @Shigaev Автор вопроса
    Сергей delphinpro, ура! Скобочки помогли!
    И снова выручаете. Спсибо.
  • Как правильно расставить скобки при ошибке установки плагина?

    Shigaev
    @Shigaev Автор вопроса
    Ипатьев, уже пробовал подобные варианты. Тогда возвращает такое:

    Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function "some_plugin_name_create_folder" not found or invalid function name in site.com\wp-includes\class-wp-hook.php:310 Stack trace: #0 site.com\wp-includes\class-wp-hook.php(334): WP_Hook->apply_filters() #1 site.com\wp-includes\plugin.php(517): WP_Hook->do_action() #2 site.com\wp-admin\plugins.php(194): do_action() #3 {main} thrown in site.com\wp-includes\class-wp-hook.php on line 310
  • Как правильно расставить скобки при ошибке установки плагина?

    Shigaev
    @Shigaev Автор вопроса
    Сергей delphinpro, я немного поторопился: в топике оказался сокращённый вариант функции. Не успел за временем редактирования, виноват.

    В общем, это функция в файле functions.php довольно несвежего плагина. Плагин однако нужен и именно в этой версии. Потому и грешу на изменения в php 8.1, на который был вынужден недавно перейти.

    Полный вариант функции выглядит так:

    function some_plugin_name_get_remote_address() {
    	$remote_addr = getenv('HTTP_CLIENT_IP')?getenv('HTTP_CLIENT_IP'):
    			getenv('HTTP_X_FORWARDED_FOR')?getenv('HTTP_X_FORWARDED_FOR'):
    			getenv('HTTP_X_FORWARDED')?getenv('HTTP_X_FORWARDED'):
    			getenv('HTTP_FORWARDED_FOR')?getenv('HTTP_FORWARDED_FOR'):
    			getenv('HTTP_FORWARDED')?getenv('HTTP_FORWARDED'):getenv('REMOTE_ADDR');
    
    	$remote_addr = str_replace('for=', '', $remote_addr);
    
    	return $remote_addr;
    }


    Ругается на строку
    $remote_addr = getenv('HTTP_CLIENT_IP')?getenv('HTTP_CLIENT_IP'):
    (
    Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`
    )

    Я уже адаптировал какое-то количество «старых» плагинов под php8. Опираясь на руководства из интернетов, само собой. Но этот что-то не могу победить. Варианты, предложенные вами, тоже не сработали. Может, судя по ругательству, всё-таки скобки?
  • Как идентифицировать и стилизовать начало параграфа без класса: по признаку комбинации общих символов?

    Shigaev
    @Shigaev Автор вопроса
    Круто! Большое спасибо. Теперь у меня диалоги со вменяемой висячкой. И теперь я знаю — к кому бечь ; ))
  • Как изменить стиль плейсхолдера у textarea?

    Shigaev
    @Shigaev
    ! Виноват, разобрался. Оказывается, input был лишним.

    Подскажите мне пожалуйста. У меня со всеми плэйсхолдерами всё ок, но не для textarea. Никак не пойму — что делаю не так.

    Мой вариант:
    input::-webkit-input-placeholder{font-family:monospace;font-size:1.6rem;color:#444}
    input::-moz-placeholder{font-family:monospace;font-size:1.6rem;color:#444}
    input:-moz-placeholder{font-family:monospace;font-size:1.6rem;color:#444}
    input:-ms-input-placeholder{font-family:monospace;font-size:1.6rem;color:#444}
    input::-ms-input-placeholder{font-family:monospace;font-size:1.6rem;color:#444}
  • Как убрать надпись “Файл не выбран” и оставить только кнопку "Выберите файл"?

    Shigaev
    @Shigaev
    Тогда пропадает счётчик «Файл не выбран». Как его вернуть?
  • В Contact Form 7 письма приходят на почту в виде "От: [your-name] Тема: [your-subject]", почему и как пофиксить?

    Shigaev
    @Shigaev
    Я так понимаю, что у вас отсутствует само сообщение в теле письма, генерируемое шорткодом [your-message].
  • Как добавить класс к ARTICLE, если он для отрывка (excerpt) Wordpress?

    Shigaev
    @Shigaev Автор вопроса
    Антон Литвиненко, это ответ на вопрос? О чём и речь. Тоха, ты не истери, ты топик раскури — задача не настолько сложно-сочинённо представлена, чтобы ты пафосом накидывался. И да, угадал — я не сайтиков разработчик, мне бы баг-другой поправить. А мою специализацию оценить сможешь нимношка приболев. В отделении я с людьми на отженись не базарю: докопайся я к неверной терминологии паца, означало бы для него нимношка помереть. Вощм, кто на что учился.
  • Как добавить класс к ARTICLE, если он для отрывка (excerpt) Wordpress?

    Shigaev
    @Shigaev Автор вопроса
    А потом удивляются — почему на Хабросвалке толпы троечников и адверт в дауне, сколько не прогревай. Чего ж удивляться бегу в тапках, при невозможности решить маленько нетривиальную задачу, на миллиметр не выходящую за рамки php? семёнсесёныч... оно откланялось )))