• There is a static webpage on which the recent wp posts should be displayed. I cannot change the encoding of that webpage. I’m trying to help a friend in germany who has run into serious problems with german Umlaute as he calls it.

    Whenever I try to pull the posts:

      <?php
        $recent_posts = wp_get_recent_posts(array(
            'numberposts' => 4, // Number of recent posts thumbnails to display
            'post_status' => 'publish' // Show only the published posts
        ));
        foreach( $recent_posts as $post_item ) : ?>
            <p><a href="<?php echo get_permalink($post_item['ID']) ?>"><?php echo $post_item['post_title'] ?>
                </a><br/><?php $post_date = get_the_date( 'd.m.Y' ); echo $post_date;?></p>
               <?php endforeach; ?>

    I end up with messed up titles as long as the post title contains special chars like ??ü.

    I had no luck with preq replace. Not sure if I did anything wrong.

    So how could we get rid of this stupid special chars and replace them with html entities?

Viewing 4 replies - 1 through 4 (of 4 total)
  • Thread Starter just0nequestion

    (@just0nequestion)

    Can you paste the corresponding part into the code snippet that I’ve pasted above please?

    I don’t really know where and how the encoding should take place with out breaking anything. I end up getting fatal wordpress errors.

    You have echo $post_item['post_title']
    when you could use echo htmlentities(strip_tags($post_item['post_title']))
    but you should read the PHP page I mentioned to determine the correct values for the flags and encoding parameters for your situation.

    Your code is a little “off” with the date.
    You are calling $post_date = get_the_date( 'd.m.Y' );
    https://developer.www.ads-software.com/reference/functions/get_the_date/
    This will get the date from the current post, not the one that you retrieved with wp_get_recent_posts. You need to pass in the post ID.

    Thread Starter just0nequestion

    (@just0nequestion)

    The replacing now works like a charm now but I really had issues to display the date related to the individual posts.

    However, thanks to @joyously and some trial and error I came up with this code snippet that works as intended.

    Is there still any mistake in the code?

      <?php
        $recent_posts = wp_get_recent_posts(array(
            'numberposts' => 10, // Number of recent posts thumbnails to display
            'post_status' => 'publish' // Show only the published posts
        ));
        foreach( $recent_posts as $post_item ) : ?>
            <p><a href="<?php echo get_permalink($post_item['ID']) ?>"><?php echo htmlentities(strip_tags($post_item['post_title']))?>
    			</a><br/>
    			<?php $post_date = get_the_date( 'd.m.Y', $post_item['ID'] ); echo $post_date;?></p>
               <?php endforeach; ?>
Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘post_title: replace special chars like ??ü in wordpress title’ is closed to new replies.