Ir ao conteúdo
  • Cadastre-se

PHP Excluir o h1 do single.php


Posts recomendados

Boa noite, eu chamo o header.php em todas as paginas do meu site a pagina header esta assim...

<?php global $trconf; ?>
<!doctype html>
<html <?php language_attributes(); ?>>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <title><?php global $page, $paged;
	wp_title( '-', true, 'right' );
	bloginfo( 'name' );
	$site_description = get_bloginfo( 'description', 'display' );
	if ( $site_description && ( is_home() || is_front_page() ) )
		echo " - $site_description";
	if ( $paged >= 2 || $page >= 2 )
		echo ' - ' . sprintf( __( 'Page %s'), max( $paged, $page ) ); ?></title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<?php wp_head(); ?>
</head>
<body>
<div class="Wrapper">
		<!--<Header>-->
		<header>
			<div class="cnt-hd">
				<div class="dfl c-rw">
					<div class="logo"><a href="<?php echo get_option('home'); ?>/" title="<?php bloginfo('name');?>"><img src="<?php echo $trconf['logo']['url']; ?>" alt="<?php bloginfo('name');?>"></a></div>
					<button class="btn-mn ctr"><span class="fa-bars"></span></button>
					<nav class="mn-hd ctr">
						<div class="mn-br">
						    <span><?php _e('User Menu', TR_THEMENAME); ?></span>							
							<button class="botn-cls"><span class="fa-times"></span></button>
						</div>
						<ul>
						    <?php wp_nav_menu(array('container' => false, 'theme_location' => 'menu_header', 'items_wrap' => '%3$s', 'fallback_cb' => 'mt_default_menu')); ?>
						</ul>
					</nav>
					<div class="frm-srch ctr">
						<?php mt_h1(); ?>
						<form method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>" id="searchform">
							<input name="s" type="text" placeholder="<?php _e('Buscar...', TR_THEMENAME); ?>">
							<button id="searchsubmit" type="submit"><span class="fa-search"></span></button>
						</form>
					</div>
				</div>
			</div>
		</header>
		<!--</Header>-->
<div class="Body">
		<hr class="btspr">

Estou tentando achar uma maneira de excluir essa linha <?php mt_h1(); ?> que chama o h1, mas apenas da pagina single.php, eu só consigo com css usando o display:none, mas preciso remover de forma com que o google não consiga ler ela para os post ficar melhor otimizado, nao manjo muito de php ainda, qualquer ideia fico muito grato.

Link para o comentário
Compartilhar em outros sites

@DesenvolvedorWeb

Como é essa função mt_h1?

 

De qualquer forma, na função, você pode verificar a página que o usuário está.

public function mt_h1() {
	if (basename($_SERVER['PHP_SELF']) == single.php){
		//SEU CODIGO AQUI
	}
}

 

Você também pode remover esse monte de echo que tem no seu código.

//Ao invés de fazer isso
<?php echo get_option('home'); ?>

//Faça isso
<?=get_option('home')?>

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olha como esta a funçao mt_h1()

function mt_h1(){
        global $trconf,$pagename;
                    
        if(is_front_page()){
            $return=$trconf['h1_home'];
        }elseif(is_single()){
            global $post;

            $return=$trconf['h1_post'];
            $return=str_replace('{name}',$post->post_title,$return);
        }elseif(is_category()){
            $return=$trconf['h1_category'];
            $return=str_replace('{name}',single_cat_title("", false),$return);
        }elseif(is_page()){
            global $post;

            $return=$trconf['h1_page'];
            $return=str_replace('{name}',$post->post_title,$return);
        }elseif(is_tag()){
            $return=$trconf['h1_tag'];
            $return=str_replace('{name}',single_tag_title("", false),$return);
        }elseif(is_search()){
            $return=$trconf['h1_search'];
            $return=str_replace('{name}',get_search_query(),$return);
        }else{
            $return=wp_title("",false,"right");        
        }

        echo '<h1>'.strip_tags($return, '<a>,<strong>').'</h1>';
    }

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@DesenvolvedorWeb Precisa ser no PHP? Essa função foi você quem criou ou veio de algum cms?

 

Você pode contornar o problema, removendo do DOM o elemento desejado usando o jQuery. Basicamente você só precisa chamar essa função:

 

$("h1.que-quer-ser-retirado").remove(); 

Veja um exemplo funcionando: http://jsfiddle.net/dife/bdsm106a/3/ 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@DiF  Essa funçao mt_h1() ela aparece em todas as paginas ela esta dentro de header.php, achei essa solução nessa parte do codigo apagar o h1_post seria um quebra galho...

elseif(is_single()){
            global $post;

            $return=$trconf['h1_post'];

Estava pensando em uma forma de fazer com que não apareça esse h1 na single.php, sem quebrar a funçao que chama o h1 dentro da funçao mt_h1() da pagina simple.php, porque eu preciso usar essa funçao mt_h1() na pagina single.php, só que fora da funçao get_header(), acredito que teria como fazer um h1 fora do header tipo <h1>"ai eu chamaria o title aqui dentro"</h1>, mas mesmo assim queria saber de voce se teria como sem precisar mexer na funçao mt_h1(), estava pensando também na possibilidade de criar outro header só para a pagina single.php e copiar o códgo da pagina header.php e só tirar o trecho do códgo que chama a funçao mt_h1() nem sei se isso é possivel ou se prejudicaria o site ou se tem outra forma mais simples, demorei um pouco para raciocinar tudo isso rsrs, espero ter explicado direitinho ^_^

Link para o comentário
Compartilhar em outros sites

  • Moderador

@DesenvolvedorWeb Mas você tentou usar o remove() para retirar o h1 específico que você quer?

Se você tem páginas diferentes, com diferentes header como é o caso de um arquivo single.php e outro diferente, porque não mexer apenas no do single e removendo do dom?

 

Tem duas formas de fazer. Por javascript puro, e  com jquery.  A diferença é que um você depende da biblioteca jquery e o outro não.

 

Javascript puro:

var elemento = document.getElementById( 'ID-do-seu-elemento-H1-que-quer-retirar' );
    elemento.parentNode.removeChild( elemento );

Particularmente, eu acho mais elegante e melhor usar o remove() do jQuery.

Note que isso remove o elemento do dom. Isso quer dizer que quando inspecionar ele, não vai existir.

No caso, você só precisa informar o elemento específico.

 

Acho que você tá complicando demais querer mexer nisso com o php.

Isso parece ser uma função de um cms existente um wordpress da vida.

 

Link para o comentário
Compartilhar em outros sites

@DiF esse h1 ele é puro não tem class nem id, ai tentei assim pegando o elemento tag h1 ...

<script type="text/javascript">
var elemento = document.getElementsByTagName('h1');
    elemento.parentNode.removeChild(elemento);
</script>

Coloquei esse códgo dentro da pagina single.php mas não removeu o h1

Link para o comentário
Compartilhar em outros sites

  • Moderador

@DesenvolvedorWeb

35 minutos atrás, DesenvolvedorWeb disse:

esse h1 ele é puro não tem class nem id

 

Não tem problema se ele não tem class e nem id.  Basta que ele esteja dentro de algum elemento que tenha.

Por exemplo:

<div class="conteudo">
  <h1>Hello World</h1>
  <p>Hello World no parágrafo</p>
</div>
$(".conteudo h1").remove();

Veja funcionando: http://jsfiddle.net/dife/msypkhgb/1/

 

Você pode especificar ainda mais se tiver dentro de outros.

Por exemplo:

$("#wrap div.conteudo h1").remove();

O elemento na frente sempre vai ser o "pai" do outro elemento se ler da esquerda para a direita.

Mas eu prefiro fazer o contrário. 

O último elemento é o que você quer. Para chegar nele, você mostra o caminho . Então o H1 é filho de div.conteudo e div.conteudo é filho de #wrap.

 

Na prática a estrutura HTML seria:

<div id="wrap">
  <div class="conteudo">
    <h1>Hello World!</h1>
  </div>
</div>

 

Em último caso, se você ver última linha da função mt_h1()  tem isto:

echo '<h1>'.strip_tags($return, '<a>,<strong>').'</h1>';

 

Você pode editar e colocar uma identificação neste H1  desta forma:

 

echo '<h1 class="ocultar">'.strip_tags($return, '<a>,<strong>').'</h1>';

 

Quando seu template rodar, a função mt_H1 vai gerar este h1 com a classe desejada.

aí é só  definir:

$(".ocultar").remove();

 

Lembrando que para funcionar, você precisa importar a biblioteca jQuery. Se você não o fez ainda podes usar o arquivo baixado do site deles e colocado no seu servidor ou usar o CDN online. Eu particularmente prefiro o CDN online, pois sempre estará atualizado.

 

Para usar é só colocar esta linha no <head>:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

OU, coloque antes do elemento <body> terminar. 

 

Em tempo,  aquele código em javascript puro, realmente não funciona. testei agora e comprovei. Descarte ele, e use a função remove() do jquery  que é muito mais prático e funciona.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@DiF deu certo muito obrigado, sabe de algum curso javascrip/jquery ou ebook atualizado, para eu voltar a estudar?

 

O ruim e que o h1 aparece antes quando entra no post só depois o script tira ele, daquela outra forma que te falei sera que daria certo criando outro header?

 

 Eu tentei assim olha como esta o arquivo single.php

<?php global $trconf; ?>
<?php get_header(); ?>
        <?php if ( have_posts() ) : ?>
		<!--<Body>-->
		<div class="cnt-bd">
			<div class="cls">
				<main class="clmb08">
				    <?php
				        while ( have_posts() ) : the_post();
                        $arcat=get_the_category( get_the_ID() );
                    ?>
					<article>
						<div class="ttl-cn dfl fa-film">
                            <?php mt_h1(); ?>
						</div>
						<div class="sngl-cn cls">
							<aside class="vdcl clma12d08">
								<div class="vdcn"><?php echo get_post_meta($post->ID, $trconf['fieldvideo'], true); ?></div>
								
								<?php if(get_the_content()!=''){ ?>
								<div class="pst-txt">
									<?php the_content(); ?>
								</div>
								<?php } ?>
								<hr class="btspr">
								<div class="ctgtgs">
									
								</div>							
								
								<hr class="btspr">
								<ul class="lst-shr">
									<p class="fa-folder"><strong>Categorias:</strong> <?php echo get_the_category_list(', '); ?></p>
								    <?php echo get_the_tag_list('<p class="fa-tags"><strong>'.__('Tags:', TR_THEMENAME).'</strong> ', ' ','</p>'); ?>
									<li class="fa-share-alt"><strong><?php _e('Share:', TR_THEMENAME); ?></strong></li>
									
									<li>
							            <a href="https://twitter.com/share" class="twitter-share-button" data-url="<?php the_permalink(); ?>/"><?php _e('Tweet', TR_THEMENAME); ?></a>
									</li>
                                    <?php if(wp_is_mobile()){ ?>									
									<li>
                                        <a href="whatsapp://send?text=<?php echo htmlentities(get_the_title(), ENT_QUOTES); ?> <?php echo htmlentities(get_permalink(), ENT_QUOTES); ?>"><img src="<?php echo get_template_directory_uri(); ?>/img/btn-wa.png" alt="<?php _e('whatsapp', TR_THEMENAME); ?>"></a>
									</li>
									<?php } ?>
								</ul>
								
							</aside>
							
                            <?php ads_post(); ?>
						</div>
					</article>
                    <?php echo mt_related($trconf['post_per_related'], $arcat[0]->cat_name, get_the_ID()); ?>
                    <?php tr_comments(); ?>
					<?php endwhile; ?>
				</main>
			</div>
		</div>
		<!--</Body>-->
		<?php
        else : 
			get_template_part('inc/404');
        endif; 
        ?>

 

 

o header.php esta assim 

<?php global $trconf; ?>
<!doctype html>
<html <?php language_attributes(); ?>>
<head>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <title><?php global $page, $paged;
	wp_title( '-', true, 'right' );
	bloginfo( 'name' );
	$site_description = get_bloginfo( 'description', 'display' );
	if ( $site_description && ( is_home() || is_front_page() ) )
		echo " - $site_description";
	if ( $paged >= 2 || $page >= 2 )
		echo ' - ' . sprintf( __( 'Page %s'), max( $paged, $page ) ); ?></title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<?php wp_head(); ?>
</head>
<body>
<div class="Wrapper">
		<!--<Header>-->
		<header>
			<div class="cnt-hd">
				<div class="dfl c-rw">
					<div class="logo"><a href="<?php echo get_option('home'); ?>/" title="<?php bloginfo('name');?>"><img src="<?php echo $trconf['logo']['url']; ?>" alt="<?php bloginfo('name');?>"></a></div>
					<button class="btn-mn ctr"><span class="fa-bars"></span></button>
					<nav class="mn-hd ctr">
						<div class="mn-br">
						    <span><?php _e('User Menu', TR_THEMENAME); ?></span>							
							<button class="botn-cls"><span class="fa-times"></span></button>
						</div>
						<ul>
						    <?php wp_nav_menu(array('container' => false, 'theme_location' => 'menu_header', 'items_wrap' => '%3$s', 'fallback_cb' => 'mt_default_menu')); ?>
						</ul>
					</nav>
					<div class="frm-srch ctr">
						<?php mt_h1(); ?>
						<form method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>" id="searchform">
							<input name="s" type="text" placeholder="<?php _e('Buscar...', TR_THEMENAME); ?>">
							<button id="searchsubmit" type="submit"><span class="fa-search"></span></button>
						</form>
					</div>
				</div>
			</div>
		</header>
		<!--</Header>-->
<div class="Body">
		<hr class="btspr">

eu precisava criar outro header e apenas tirar essa funçao <?php mt_h1(); ?> do novo header que vou chamar na pagina single.php, ai eu tentei assim criei uma nova pagina com nome de header2.php e coloquei o mesmo código que esta na pagina header.php, apenas tirei essa linha da funçao que chama o h1 <?php mt_h1(); ?>, acredito que eu esteja chamando a pagina errado, estou chamando ela assim no lugar de <?php get_header(); ?> eu coloquei <?php get_header2(); ?> para chamar a pagina header2.php, mas nao adiantou, qual a maneira correta de fazer isso?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@DesenvolvedorWeb Você tem a opção de ir no CSS na parte do header que é criado e definir display: none  para ele já começar oculto, além do jquery que remove o elemento do dom.

 

Quanto ao seu erro ali no código, não vai funcionar. Por que o script php espera uma função com o nome get_header() e não get_header2()

 

Você já tentou remover a função direto? a que gera o h1. ...  como eu disse anteriormente é complicado ficar alterando códigos que não são seus. Estes códigos são do próprio tema do wordpress que você está usando.

 

Quanto a sua outra pergunta sobre cursos...  não sei de nenhum. Nunca frequentei um.  É bem mais fácil você aprender sozinho usando video aulas do youtube e leituras de livros.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@DiF deu certo usando o display:none, usando essa funçao .remove tira o h1 do codgo fonte né, ai o google nao le esse h1 ou le mesmo assim? é que preciso que o google não le esse h1 para melhor otimizaçao seo onpage, nao sera prejudicial para o seo onpage a utilizaçao da funçao .remove?

Link para o comentário
Compartilhar em outros sites

  • Moderador
57 minutos atrás, DesenvolvedorWeb disse:

.remove tira o h1 do codgo fonte né, ai o google nao le esse h1 ou le mesmo assim?

a função remove()  remove do dom o elemento. Ou seja, ao remover, ele passa a não existir mais, a não ser que você retire a função.

O lance anterior que você disse que aparece primeiro e depois some, é porque a função remove, só age depois de carregar todos os elementos e scripts.  

 

57 minutos atrás, DesenvolvedorWeb disse:

nao sera prejudicial para o seo onpage a utilizaçao da funçao .remove?

Não. Porque a função apenas remove do DOM o elemento. Não afeta desempenho e nem as otimizações.

É como se você não tivesse utilizado o elemento H1  que é destinado a títulos de cabeçalho.

 

 

Então faz sentido usar o display none com o remove.. porque já que a ideia é remover, se só definir o display none, você estaria apenas escondendo o elemento.. mas ele continuaria ali. Mas ao usar o remove()  você além de esconder primeiramente o elemento, você remove do DOM(Document Object Model)

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@DesenvolvedorWeb Não sei responder isso. rsrs.

Mas pode ser possível. Pelo que sei a função remove() remove totalmente o elemento do dom, sem possibilidade de reinserir novamente. 

 

Caso o desenvolvedor queira que o elemento seja reinserido de novo, aí a função que deve ser usado é .detach() que remove do dom, mas preserva os dados relacionados a ele.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@DiF estranho né quando aperta f12 o elemento nao esta la mas quando aperta ctrl+u para ver pagina inteira ele esta la, vou te que arrumar isso pelo php mesmo entao acho nao deve ser muito difícil, eu achei a funçao que monta o h1, acho que sei o que fazer mas nao sei como fazer a funçao é essa olha ...

function mt_h1(){
		global $trconf,$pagename;
					
        if(is_front_page()){
            $return=$trconf['h1_home'];
        }elseif(is_single()){
            global $post;

            $return=$trconf['h1_post'];
            $return=str_replace('{name}',$post->post_title,$return);
        }elseif(is_category()){
            $return=$trconf['h1_category'];
            $return=str_replace('{name}',single_cat_title("", false),$return);
        }elseif(is_page()){
            global $post;

            $return=$trconf['h1_page'];
            $return=str_replace('{name}',$post->post_title,$return);
        }elseif(is_tag()){
            $return=$trconf['h1_tag'];
            $return=str_replace('{name}',single_tag_title("", false),$return);
        }elseif(is_search()){
            $return=$trconf['h1_search'];
            $return=str_replace('{name}',get_search_query(),$return);
        }else{
            $return=wp_title("",false,"right");		
        }

        echo '<h1>'.strip_tags($return, '<a>,<strong>').'</h1>';
	}

 

eu tentei tirando apenas essa parte...

elseif(is_single()){
            global $post;

            $return=$trconf['h1_post'];
            $return=str_replace('{name}',$post->post_title,$return);
        }

 

ai some o titulo que esta dentro do h1 mas essa parte aqui ...

echo '<h1>'.strip_tags($return, '<a>,<strong>').'</h1>';

ela ainda chama a tag <h1></h1>, o duro que ela é usada para chamar os h1 das outras paginas também ai nao da para eu remover ela, tenho que achar uma forma desse echo não mostrar nada na pagina single.php, ou não tem nada a ver o que falei rsrs?

Link para o comentário
Compartilhar em outros sites

@DiF tentei criar outro header coloquei nome de header2.php e o chamei assim <?php include 'header2.php' ?> na pagina single.php no lugar do <?php get_header(); ?> mas esta dando error, sera que estou chamando ele da maneira errada?

 

Edit: Nao tinha atualizado mesmo, agora esta normal atualizo e sumiu aquele h1 quando aperto ctrl+u

 

Ops nao sumiu nao, tinha sumido porque eu tinha tirado a funçao <?php mt_h1(); ?> de header sem querer ai tinha sumido mas sumido de todas as paginas.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!