@tsi3amttaf

Как сократить/оптимизировать или сделать рефакторинг этого куска PHP?

Здравствуйте.

Делаю что-то на подобии плагина для темы WordPress.

Я не прошу о "медвежей" услуге. Подскажите пожалуйста в каком направлении искать, какой пункт читать, что учить.
Вот собственно этот ужас:

function meta_desc() {
	
	global $post;
	if ( is_singular() ) {
		
		if( !empty( $post -> post_excerpt ) ) {
		
			$exc_p = apply_filters( 'the_excerpt', $post -> post_excerpt );
			$exc_p = str_replace( array( "\n", "\r", "\t" ), ' ', $exc_p );
			$exc_p = strip_shortcodes( $exc_p );
			$exc_p = strip_tags( $exc_p );
			$exc_p = substr( $exc_p, 0, 300 );
			
			echo '<meta name="description" content="' . $exc_p . '" />';
			
		} else {
			
			$con_p = apply_filters( 'the_content', $post -> post_content );
			$con_p = str_replace( array( "\n", "\r", "\t" ), ' ', $con_p );
			$con_p = strip_shortcodes( $con_p );
			$con_p = strip_tags( $con_p );
			$con_p = substr( $con_p, 0, 300 );
			
			echo '<meta name="description" content="' . $con_p . '" />';
			
		}
		
	} elseif( is_category() ) {
		
		if( !empty( category_description() ) ) {
		
			$cat_p = category_description();
			$cat_p = str_replace( array( "\n", "\r", "\t" ), ' ', $cat_p );
			$cat_p = strip_shortcodes( $cat_p );
			$cat_p = strip_tags( $cat_p );
			$cat_p = substr( $cat_p, 0, 300 );
			
			echo  '<meta name="description" content="' . $cat_p . '" />';
			
		} else {
			
			echo  '<meta name="description" content="' . __( 'Test', 'default' ) . '" />';
			
		}
		
	}
	
}
add_action( 'wp_head', 'meta_desc' );


Код будет и дальше разрастаться условиями (is_404, is_home и т. п.), мне нужно это предотвратить, но для этого недостаточно знаний.

Критика крайне приветствуется. Спасибо за внимание.
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
// инициализация дефолтом
$desc = __( 'Test', 'default' );
// роутинг 
// 1 случай
if(is_singular()){
   if( !empty( $post -> post_excerpt ) ) {
      $desc = apply_filters( 'the_excerpt', $post -> post_excerpt );
   }
}
// 2 случай
и т.д.

// форматирование
$desc = str_replace( array( "\n", "\r", "\t" ), ' ', $desc );
$desc = strip_shortcodes( $desc );
$desc = strip_tags( $desc );
$desc = substr( $desc, 0, 300 );
// вывод
echo  '<meta name="description" content="' . $desc . '" />';
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы