web-dev-qa-db-ja.com

wp_editorとWPAlchemyが更新時にタグをめちゃくちゃにする

wp_editorを使うときは、テキストをビジュアルエディタに貼り付けます。 HTMLエディタに切り替えると、私のタグはすべてそこにあります。これまでのところ、問題ありません。更新すると、すべてのタグがビジュアルエディタとHTMLに表示されます。タグは次のようになります。

<p><strong>

もう一度更新すると、タグが自分のページに表示されます。だから私は一度だけ私のテキストの編集にこだわっています。複数回更新すると、タグが表示されてすべてがめちゃくちゃになります。

誰が何が起こっているのかの手がかりを得ましたか?

その行を使ってwp_editorを作成します。

<?php $metabox->the_field('shortText'); ?>
<p>
    <label for="<?php $metabox->the_name(); ?>">Text</label>
    <?php wp_editor($metabox->get_the_value(), $metabox->get_the_name(), $settings); ?>
</p>

ありがとうございます。

編集:

問題はあります

$metabox->get_the_value()

それはタグを使ってコードを解析し、それからすべてをめちゃくちゃにします。ビジュアルエディタではなくHTMLエディタで値を解析する方法はありますか?

追加ソース:

入力:

Faire des sorties de groupe et briser l’isolement. Venez vivre une activité entre gens qui vivent les mêmes choses, sentir la force du groupe plutôt que l’isolement.

出力(var_dump):

string(594) "<p><strong>Faire des sorties de groupe et briser l’isolement. Venez vivre une activité entre gens qui vivent les mêmes choses, sentir la force du groupe plutôt que l’isolement.</strong></p> <p><strong></strong>Le Regroupement vous propose des sorties de groupe pour faciliter le plaisir en vivant des expériences comme vivent les « autres familles normales ». Nos sorties sont dépourvues d’obstacles et se vivent sans les soucis de se faire identifier parmi le groupe.</p>"

そして関数get_the_value();

/**
 * @since    1.0
 * @access    public
 */
function get_the_value($n = NULL, $collection = FALSE)
{
    $this->_meta(NULL, TRUE);

    $value = null;

    if ($this->in_loop)
    {
        if(isset($this->meta[$this->name]))
        {
            $n = is_null($n) ? $this->subname : $n ;

            if(!is_null($n))
            {
                if ($collection)
                {
                    if(isset($this->meta[$this->name][$this->current]))
                    {
                        $value = $this->meta[$this->name][$this->current];
                    }
                }
                else
                {
                    if(isset($this->meta[$this->name][$this->current][$n]))
                    {
                        $value = $this->meta[$this->name][$this->current][$n];
                    }
                }
            }
            else
            {
                if ($collection)
                {
                    if(isset($this->meta[$this->name]))
                    {
                        $value = $this->meta[$this->name];
                    }
                }
                else
                {
                    if(isset($this->meta[$this->name][$this->current]))
                    {
                        $value = $this->meta[$this->name][$this->current];
                    }
                }
            }
        }
    }
    else
    {
        $n = is_null($n) ? $this->name : $n ;

        if(isset($this->meta[$n]))
        {
            $value = $this->meta[$n];
        }
    }

    if (is_string($value) || is_numeric($value))
    {
        if ($this->in_template)
        {
            return htmlentities($value, ENT_QUOTES, 'UTF-8');
        }
        else
        {
            // http://wordpress.org/support/topic/call-function-called-by-embed-shortcode-direct
            // http://phpdoc.wordpress.org/trunk/WordPress/Embed/WP_Embed.html#run_shortcode

            global $wp_embed;

            return do_shortcode($wp_embed->run_shortcode($value));
        }
    }
    else
    {
        // value can sometimes be an array
        return $value;
    }
}
1
Elggetto

私は錬金術を動力とするメタボックスで新しいwp_editor関数を利用するとき同じ問題に遭遇しました。私はいくつかの検索を行い、 "html_entity_decode"を利用する解決策を見つけました。ここで参照を見てください。 https://Gist.github.com/1838037

2
Jonathan Wold

変更してみてください

<?php wp_editor($metabox->get_the_value(), $metabox->get_the_name(), $settings); ?>

<?php wp_editor( esc_textarea( $metabox->get_the_value() ), $metabox->get_the_name(), $settings); ?>

1
Dave Romsey