1

「list-two」というカスタム メタ ボックスがあり ( Advanced Custom Fieldsを使用)、編集ペイン内で「more」タグを使用して、テキスト/コンテンツを 2 つの列に分割したいと考えています。これはこれまでの私のコードですが、必要なことの半分しか実行しません。

私の functions.php ファイルで:

function split_morecontent() {
global $morecontent;
$morecontent = true;
$copy = preg_split('/<span id="more-\d+"><\/span>/i', get_field('list_two'));
for($c = 0, $csize = count($copy); $c < $csize; $c++) {
    $copy[$c] = apply_filters('list_two', $copy[$c]);
}
return $copy;
}

私の投稿テンプレートファイルでは:

<?php
 // split text into array
    $copy = split_morecontent();
 // output first content section in column1
echo '<section class="split">', array_shift($copy), '</section>';
 // output remaining content sections in column2
echo '<section class="split">', implode($copy), '</section>';
?>

実行時に次の HTML を出力します (実際にはコンテンツが 2 つのタグに分割されていないことに注意してください)。

<section class="split">
  <ul class="footnote">
     <li>Christopher Gray</li>
     <li>Jean Jullien<!--more--></li>
     <li>Nous Vous</li>
     <li>Liv Bargman</li>
     <li>Luke Drozd</li>
  </ul>
</section>

<section class="split">
     <!-- the last 3 <li> tags from the list above should be displayed within here.-->
</section>
4

2 に答える 2

1

SitePointに、役立つと思われる記事があります。 WordPressコンテンツを2つ以上の列に分割する方法を確認してください。基本的に、次のように指示します。

あなたに追加functions.php

// split content at the more tag and return an array
function split_content() {
    global $more;
    $more = true;
    $content = preg_split('/<span id="more-\d+"><\/span>/i', get_the_content('more'));
    for($c = 0, $csize = count($content); $c < $csize; $c++) {
        $content[$c] = apply_filters('the_content', $content[$c]);
    }
    return $content;
}

この分割を発生させたい場合はいつでも(single.phpほとんどのテーマでデフォルトで想定しています) 、次のように、the_content()呼び出しを新しく作成したものに置き換える必要があります。split_content()

<?php
    // original content display
        // the_content();
    // split content into array
        $content = split_content();
    // output first content section in column1
        echo '<div id="column1">', array_shift($content), '</div>';
    // output remaining content sections in column2
        echo '<div id="column2">', implode($content), '</div>';
?>

これで、コンテンツが2つの別々のdivに分割されました。<!--more-->それぞれに幅を付けてフロートを適用するだけで、タグを使用してコンテンツを2つの列に分割できます。

于 2012-06-26T23:58:25.137 に答える