フォーラムへの返信

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: 記事の文字数を表示したい。
    トピック投稿者 ringoame

    (@ringoame)

    詳細なご教示ありがとうございます。

    munyagu様
    今まで「エディタ画面の左下の文字数」が正確な文字数だと思っていたのですが、仰るようにショートコードの文字数も加算されていました。

    色々試してみた結果、近しい数字は無理かもしれないと感じました。
    現時点では多少の誤差は妥協して、また探っていきたいと思います。

    nora様
    ご丁寧にコードをご教示頂きありがとうございます。

    「あとは、jQueryで文字数を取得してINPUTタグに入れてしまう処理を書いて、フォーム送信前にトリガーされるように――」

    なるほど。この部分をスラスラと書けたら実現できそうなのですね。
    上記の件も含めて、これからまた調べて試してみます。

    解決して返事を書こうと思いましたが、時間がかかりそうなのでひとまず閉じさせて頂きます。
    ありがとうございました。

    フォーラム: 使い方全般
    返信が含まれるトピック: 記事の文字数を表示したい。
    トピック投稿者 ringoame

    (@ringoame)

    早速のご回答ありがとうございました。大変有り難いです。

    お二方の解説を読んで試してみましたが文字数はやはり誤差が出ます。
    あまりわかっていません。以下のような書き方で良いのでしょうか。

    <?php
    global $post;
    $text = $post->post_content;
    $content_text = mb_strlen( strip_tags($text) , "UTF-8" );
    $content_text = mb_strlen( preg_replace( '/\[[^\]]+\]/i', '', wp_strip_all_tags( $text ) ), "UTF-8" );
            echo "文字数 約:" .  $content_text . "";
    ?>

    投稿画面の文字数とは、仰るように「編集ページのエディタに表示される文字数」です。
    スクショ

    例えば上のスクショは文字数16,795ですが、実際の固定ページには17,921と表示されます。
    できれば文字数16,795と表示したいです。

    この文字数を一つ一つカスタムフィールドに保存という方法も考えましたが、ページ数が膨大なのであまり現実的ではありません。

    jQueryでテキスト部分を取得して――の方法だと「編集ページのエディタに表示される文字数」を、最初に貼ったコードに組み込み、固定ページに表示できるのでしょうか。
    直接的な質問で申し訳ありません。もしよろしければどなたかご教示頂けたら幸いです。

    フォーラム: 使い方全般
    返信が含まれるトピック: 記事の文字数を表示したい。
    トピック投稿者 ringoame

    (@ringoame)

    タグを間違っていたので再度貼らせて頂きます。すみません。
    引き続きよろしくお願いします。

    <?php
    $args = array(
    'post_type' => 'page', 
    'post_parent' =>{xxx},
    'order' => 'ASC',
    'posts_per_page' => 10,  
    
    );
    $the_query = new WP_Query( $args ); ?>
    <dl>
    <?php if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <dt><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></dt>
    <dd>
    <?php echo post_custom('aaa'); ?>
    </dd>
    <dd><?php the_time('Y.m.d'); ?></dd>
    <dd>
    <?php
    global $post;
    	$text = $post->post_content;
    	preg_match_all( "/<[a-zA-Z0-9\s=':;,{}#$%&@~<>\"\!\?\|\/\._\-\( \)\\\[\]]+>/" , $text , $match );
    	for( $i=0; $i < count( $match[0] ); $i++ ){
    		$removal_all = $removal_all + mb_strlen( $match[0][$i] , "UTF-8" );
    	}
    	$content_text = mb_strlen( $text , "UTF-8" ) - $removal_all;
            echo "文字数 約:" .  $content_text . "";
    ?>
    </dd>
    <?php endwhile; ?>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>
    </dl>
    トピック投稿者 ringoame

    (@ringoame)

    返信ありがとうございました!
    下記のように書いて理想通りの結果になりました。

    <ul>
    <?php
        $pages = get_pages('sort_column=post_date&child_of=12345&sort_order=ASC');
        foreach ( $pages as $page ) {
            $option = '<li><a href="' . get_page_link( $page->ID ) . '">';
            $option .= $page->post_title;
            $option .= '</a> ';
            $option .= get_post_meta($page->ID, 'カスタムフィールド名', true);
            $option .= ' ';
            $option .= mysql2date('Y.m.d', $page->post_date);
            $days=30;
            $today=date('U'); $entry=strtotime($page->post_date);
            $diff1=date('U',($today - $entry))/86400;
            if ($days > $diff1){$option.='<font color="ff0000">New!</font>';}
            $option .= '</li>';
            echo $option;
        }
    ?>
    </ul>

    色々試す間にコードがおかしな事になっていました。お恥ずかしいです。
    ご指南くださったjdbb様、Hinaloe様、本当にありがとうございました!

    トピック投稿者 ringoame

    (@ringoame)

    お手数おかけしております!

    <?php
        $pages = get_pages('sort_column=post_date&child_of=12345&sort_order=ASC');
        foreach ( $pages as $page ) {
            $option = '<li><a href="' . get_page_link( $page->ID ) . '">';
            $option .= $page->post_title;
            $option .= '</a> ';
            $option .= get_post_meta($page->ID, 'カスタムフィールド名', true);
            $option .= ' ';
            $option .= mysql2date('Y.m.d', $page->post_date);
            $days=30;
            $today=date('U'); $entry=strtotime($page->post_date);
            $diff1=date('U',($today - $entry))/86400;
           if ($days > $diff1){
            echo'<font color="ff0000">New!</font>';
    }
            $option .= '</li>';
           echo $option;
        }
    ?>

    結論から申しますとNEW!が意図しない場所に出てきました。

    <ul>
    <li><a href="">タイトル</a> カスタムフィールド値 2013.06.19</li>
    <li><a href="">タイトル</a> カスタムフィールド値 2013.08.23</li>
    <li><a href="">タイトル</a> カスタムフィールド値 2014.05.30</li>
    <p><font color="ff0000">New!</font>
    <li><a href="">タイトル</a> カスタムフィールド値 2014.09.01</li>
    </ul>

    NEW!が出ている場所が微妙なので、出力結果として合っているのか自信がなく、しかし答えを導き出す方法も思いつきません。

    上記の子ページを作成したのは2013.6.19で、最初の孫ページを作成した日と同じです。
    (閉じられていないPタグも謎ですが、最終的にはimgでどうにかしたいです)

    出力結果として理想の形は最初にも書きました通り、

    ・リンク付きタイトル カスタムフィールド値 作成日 NEW!

    です。

    場所を変えたり色々やってみましたが、真っ白か同じ事象の繰り返しで行き詰まっています。
    このままget_pagesで試行錯誤して結果が得られそうなのか、get_pagesで理想の形にする事までは無理なのか?

    おかげ様で日付が出てきただけでも良しとするべきですが、あと少しのような気がしてあきらめきれません。
    何かご指南頂きたく再度投稿させて頂きました。ご覧の通り知識は初心者レベルです。

    お手すきの時で構いません、ヒントかずばり答えでも大歓迎です!ので、
    皆さまどうぞお知恵を貸してください。よろしくお願いします。

    トピック投稿者 ringoame

    (@ringoame)

    返信ありがとうございました!

    <?php
        $pages = get_pages('sort_column=post_date&child_of=17057&sort_order=ASC');
        foreach ( $pages as $page ) {
            $option = '<li><a href="' . get_page_link( $page->ID ) . '">';
            $option .= $page->post_title;
            $option .= '</a> ';
            $option .= get_post_meta($page->ID, 'midasi', true);
            $option .= ' ';
            $option .= mysql2date('Y.m.d', $page->post_date);
            $option .= '</li>
    ';
            echo $option;
        }
    ?>

    ヒントを元に紆余曲折の後、日付はこのようにして何とか出力できました。
    正しいのかどうかもわかりませんが、ここまで出来たので何とか完遂したいです。

    上記の、日時を取得する事につづいてNEWマークを付けることは可能と思われるでしょうか。
    色々やっていますが案の定うまくいかず、またヒントでも頂けたら大変有難いです。
    よろしくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)