(Wordpress) Как я могу получить полное содержимое сообщения с тегами html - без удаления

Я использую WordPress для своего сайта с плагином qtranslate и пытаюсь отображать языковые флаги в каждом сообщении.

Qtranslate вставляет html-теги в содержимое и заголовок, например «!--:en-->», для каждого языка, который я использовал в каждом сообщении.

Поэтому мне нужно условие, которое проверяет, какие из этих тегов html включены в контент, чтобы я мог распечатать определенные флаги.

что-то вроде этого:

function language_pick(){
    $qt_dir = "http://localhost/MY-SITE/wp-content/plugins/qtranslate-xp/flags/";
    $cr_url = "http://".$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
    $en_url = esc_html($cr_url."&lang=en");
    $fr_url = esc_html($cr_url."&lang=fr");
    $it_url = esc_html($cr_url."&lang=it");
    $es_url = esc_html($cr_url."&lang=es");

    $query = get_post(get_the_ID()); 
    $content = apply_filters('the_content', $query->post_content);

    if(get_permalink() != $cr_url) { echo '<a style="margin-left:15px;" href="'.$cr_url.'" /><img src="'.$qt_dir.'gr.png"></a>'; }
    if (strpos($content, '<!--:en-->') === true) {
         if(get_permalink() != $en_url) { echo '<a style="margin-left:15px;" href="'.$en_url.'" /><img src="'.$qt_dir.'gb.png"></a>'; } }
    if(strpos($content,'<!--:fr-->') === true) {
        if(get_permalink() != $fr_url) { echo '<a style="margin-left:15px;" href="'.$fr_url.'" /><img src="'.$qt_dir.'fr.png"></a>'; } }
    if(strpos($content,'<!--:it-->') === true) {
        if(get_permalink() != $it_url) { echo '<a style="margin-left:15px;" href="'.$it_url.'" /><img src="'.$qt_dir.'it.png"></a>'; } }
    if(strpos($content,'<!--:es-->') === true) {
        if(get_permalink() != $es_url) { echo '<a style="margin-left:15px;" href="'.$es_url.'" /><img src="'.$qt_dir.'es.png"></a>'; } }
}

person CrikoC    schedule 14.08.2015    source источник


Ответы (1)


Очень просто добавьте <?= apply_filters('the_content', $content); ?>

В гугле есть куча ссылок на это.

EDIT Итак, в этом случае:

$query = get_post(get_the_ID()); 
$content = apply_filters('the_content', $query->post_content);

echo $content;
person ggdx    schedule 15.08.2015
comment
Спасибо за ваш ответ! Где именно я должен поместить это в свой код? приведенный выше код находится в функции, которую я вызываю в content-single.php, сразу после the_title() - person CrikoC; 15.08.2015
comment
и, чтобы быть немного более конкретным: $query = get_post(get_the_ID()); $content = $query-›post_content; Когда я повторяю это (только для проверки), он уже лишен html. - person CrikoC; 15.08.2015
comment
К сожалению, он отображает содержимое только на языке по умолчанию, поэтому условное выражение не может найти html-теги для других языков... Есть ли другой способ получить содержимое из базы данных с html-тегами в виде текста? - person CrikoC; 15.08.2015
comment
Это потому, что вы просто копируете и вставляете то, что я сделал. Вам не нужно повторять это! Используйте $content как хотите! У него будет все, что есть (включая теги html) в $query-›post_content - person ggdx; 15.08.2015
comment
Оно работает! вместо: if(strpos($title,'‹!--:en--›') == true), кажется, это помогает: if(strpos($title,':en') == true) - person CrikoC; 17.08.2015