Como eu uso Shortcodes dentro de tags HTML?

3

Eu tentei incluir códigos de acesso com um parâmetro na saída HTML bruta, como mostrado abaixo:

<a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a>

Isso trava a função PHP do_shortcode() .

Coisas assim não são possíveis com códigos de acesso?

A própria descrição do método contém um aviso:

  

Usuários com capacidade unfiltered_html * podem obter resultados inesperados se   chaves de ângulo são aninhados em tags.

No entanto, o crash do PHP não é o tipo de saída inesperada que deve acontecer.

PS: A função que está sendo chamada é

function echocode( $atts ){
    return "Hello World";
}

e adicionado como

add_shortcode("foocode", "echocode");

A função nunca é executada. (Nenhum ecocódigo de início está sendo impresso)

    
por ApolloLV 05.10.2016 / 16:38

5 respostas

5

códigos de acesso não são permitidos em atributos HTML, códigos de acesso não são linguagem de programação, eles são proprietários de locais para conteúdo html adequado.

    
por Mark Kaplun 05.10.2016 / 17:18
4

Espero que isso ajude alguém:

Em vez de fazer isso: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a>

Você pode fazer isso: [foocode parameter1=value parameter2=othervalue] e depois fazer isso:

add_shortcode( 'foocode', 'prefix_foocode' );

function prefix_foocode( $atts ) {

    // Normalize $atts, set defaults and do whatever you want with $atts.

    $html = '<a href="https://example.com/folder/edit.php?action=someaction&id=' . $atts['parameter1'] .'&edittoken=' . $atts['parameter2'] . '">linktext</a>'
}
    
por Máximo Obed Leza Correa 18.03.2017 / 22:59
3

Por que vale a pena, códigos de acesso que não aceitam parâmetros parecem funcionar em tags HTML. São os que têm parâmetros que não são.

Ex: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a> não funciona

Ex: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode]&edittoken=[foo-other-code]">linktext</a> funciona (pelo menos para mim)

Eu usei um shortcode simples como este para mostrar o caminho para as imagens no meu site, para que eu não tenha que lembrar o caminho de cada vez (não uso o gerenciador de mídia).

Espero que isso ajude alguém que pode tropeçar nessa questão mais tarde.

    
por Crazycoolcam 09.07.2017 / 15:13
2

Por favor, tente com isso -

<a href="https://example.com/folder/edit.php?action=someaction&id=<?php echo do_shortcode("[foocode parameter='value']"); ?>&edittoken=<?php echo do_shortcode("[foocode parameter='othervalue']"); ?>">linktext</a>
    
por mukto90 05.10.2016 / 18:40
0

Para executar o shortcode dentro do elemento HTML bruto, você deve encontrar a função de retorno de chamada que está sendo chamada via shortcode e, em seguida, fazer eco dessa função no elemento html bruto.

Por exemplo, se o seu shortcode for [foo_code] , então descubra qual função está sendo chamada de volta quando esta função estiver sendo executada, encontrando o add_shortcode () para este shortcode (neste caso [foo_code]) -

add_shortcode('foo_code', 'foo_callback_function');

Agora, quando você sabe qual função está sendo chamada, você pode simplesmente fazer eco dessa função no HTML bruto, como:

[echo foo_callback_function();]

Para mais detalhes, por que funciona, confira esta resposta . Espero que ajude!

    
por sheetal 18.03.2018 / 17:48