Hot answers tagged

19

I would do it this way: functions.php <?php add_filter( 'posts_where', 'title_like_posts_where', 10, 2 ); function title_like_posts_where( $where, &$wp_query ) { global $wpdb; if ( $post_title_like = $wp_query->get( 'post_title_like' ) ) { $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'' . esc_sql( $wpdb->esc_like( $...


15

If you have the attachment id, you can use get_the_title() $attachment_title = get_the_title($attach_id) http://codex.wordpress.org/Function_Reference/get_the_title


15

Updating the posts $all_posts = get_posts( 'posts_per_page' => -1, 'post_type' => 'post' ); foreach ( $all_posts as $single ) { wp_update_post( array( 'ID' => $single->ID, 'post_title' => to_title_case( $single->post_title ) // see function below )); } Converting a string to "Title Case" And, while not ...


14

add_filter('admin_title', 'my_admin_title', 10, 2); function my_admin_title($admin_title, $title) { return get_bloginfo('name').' &bull; '.$title; } You could also do a str_replace on $admin_title to remove "— WordPress" and change "‹". Look at the top of the wp-admin/admin-header.php file to see what is going on by default.


13

The easiest workaround could be: function myplugin_update_slug( $data, $postarr ) { if ( ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) { $data['post_name'] = sanitize_title( $data['post_title'] ); } return $data; } add_filter( 'wp_insert_post_data', 'myplugin_update_slug', 99, 2 );


12

There is no documentation on it but you could always apply a filter to the_title like this: add_filter('the_title','some_callback'); function some_callback($data){ global $post; // where $data would be string(#) "current title" // Example: // (you would want to change $post->ID to however you are getting the book order #, // but you ...


11

This is possible by filtering wp_nav_menu_objects, which is the easiest place to check which item is the current menu item, because WordPress already added the classes for you. add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' ); function wpse16243_wp_nav_menu_objects( $sorted_menu_items ) { foreach ( $sorted_menu_items as $menu_item ) {...


11

The WPSEO plugin by Yoast has a filter for the title: 'wpseo_title'. You'll need to add something like this: add_filter('wpseo_title', 'filter_product_wpseo_title'); function filter_product_wpseo_title($title) { if( is_singular( 'product') ) { $title = //your code } return $title; } More info at the WordPress SEO API Docs page.


11

I just found the answer and instead of putting this in the Title: <!--:en-->My English Title<!--:--><!--:fr-->My French Title<!--:--> We need to put this code: [:en]My English Title[:fr]My French Title and qTranslate does the rest :)


9

you can use this function that jumps by google "get post by title" /** * Retrieve a post given its title. * * @uses $wpdb * * @param string $post_title Page title * @param string $post_type post type ('post','page','any custom type') * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A. * @return mixed */ function get_post_by_title($...


9

<?php if(count($related)) { echo "<div>Read More<ul>"; foreach($related as $id) { echo '<li><a href="'.get_permalink( $id ).'">'.get_the_title( $id ).'</a></li>';     }     echo "</ul></div>";   } ?>


8

Also, run the slug from sanitize_title_with_dashes() through wp_unique_post_slug() to ensure that it's unique. It will automatically append '-2', '-3' etc. if it's needed.


7

You can use the widget_display_callback (fired, predictably, just prior to displaying a widget :) ). add_filter('widget_display_callback','wptuts54095_widget_custom_title',10,3); function wptuts54095_widget_custom_title($instance, $widget, $args){ if ( is_single() ){ //On a single post. $title = get_the_title(); $instance['title']...


7

/** * Wraps the first half of the provided string inside a span with the class lol_class. * * @param string $title The string. * @return string The modified string. */ function wpsa_82312_widget_title($title) { // Cut the title into two halves. $halves = explode(' ', $title, 2); // Throw first word inside a span. $title = '&...


7

There are actually two problems: The & is encoded as &amp;, so you have to use html_entity_decode() first. Multi-byte characters need more than one byte, and strlen() will fail with them. Don’t use strlen(). So use something like this: $title = html_entity_decode( get_the_title(), ENT_XML1, 'UTF-8' ); $length = mb_strlen( $title, 'utf-8' );


7

I use a code which differs from yours a little bit. There is no need to get the current screen using the enter_title_here-filter because you have already a post-object: /** * Filter: Modifies the standard placeholder text * @param string $title * @param WP_Post $post * @return string */ function my_enter_title_here( $title, $post ) { if ( '...


6

You can try the following code. function custom_post_type_title ( $post_id ) { global $wpdb; if ( get_post_type( $post_id ) == 'cars' ) { $engine= ', '.get_post_meta($post_id, 'Engine', true).'l'; $terms = wp_get_object_terms($post_id, 'brand'); $abrand= ' '.$terms[0]->name; $amodel = ' '.$terms[1]->name; ...


6

You can globalize $post to work out the post type. Example: add_filter( 'the_title', 'add_the_title_prefix' ); function add_the_title_prefix( $title ) { global $post; if ( 'custom_post_type_name' != $post->post_type ) return $title; return "<span>Press:</span> {$title}"; }


6

You can use markup in titles. H<sub>2</sub>O will work just fine. I would use H₂O with a real ₂ because markup will be stripped in title attributes and in feeds. Note that WordPress will not create a pretty permalink for the correct character. The slug for my example will look like this: h2o-h%e2%82%82o. You need my plugin Germanix URL to get ...


6

It looks like your site's title is empty. Fill it out or try for example: add_filter( 'wp_title', function( $title ) { return trim( $title ); } ); to remove the blank space in front. For your setup, the following part of wp_title() is responsible for the blank space: $title = $prefix . implode( " $sep ", $title_array ); So when you're on a single ...


5

In WordPress, "---" and " -- " become em-dashes (— &#8212;) and "--" becomes an en-dash (— #8212;). The sanitize_title_with_dashes() function doesn't catch these. That function uses the databased copy, but the title displayed to the user always goes through a texturize function. So if we replace en/em dashes on their way into the database, ...


5

Disable all plugins. One of them puts all words with capital letters in a <span class="caps"> container. In <meta property="og:title" content="test <span class="caps">CSS</span> title" /> … this closes the <head> section automatically because output is not allowed in <head>. If you have found the plugin tell its ...


5

You can use your own hook for widget_title action. You can determine specific widget by $id_base parameter which is passed as third argument to the hook. It should work like this: function myplugin_widget_title( $title, $instance, $id_base ) { if ( !is_single() ) { return $title; } $post_title = get_the_title(); switch ( $id_base ) {...


5

Assuming this question is related to Wordpress, here is answer :- You can update the titles directly into your mySQL database using simple update function. one of my user publishs all his posts uppercase (title) i want to edit them and make it normal. – Using some conditional statements as I mentioned in this code, you can restrict the update for ...


5

Hook into the_post – called when the post is actually used – and fill the title. Be aware the slug has to be changed too. If you are used not to enter a title, hook into save_post too, and let the same code do this for you. The code Download on GitHub <?php /** * Plugin Name: T5 Lazy Title Updates * Description: Fill missing post titles from content ...


5

the_title is a Loop tag. It "Displays or returns the title of the current post" and it is supposed to be used inside the Loop, not outside of it. What you are doing-- calling it outside the Loop-- is not quite correct, and you are getting inconsistent results. What happens is this: The $post variable gets set to the first post in the Loop very early in ...


5

You could change the post title when it is viewed: add_action( 'the_post', 'wpse_94856_title_update' ); function wpse_94856_title_update( $post ) { if ( empty ( $post->post_title ) ) return; $new_title = mb_convert_case( $post->post_title, MB_CASE_TITLE, "UTF-8" ); if ( $post->post_title === $new_title ) return; ...


5

The best (and easiest) thing to do is to use the wp_title filter. First, clean up your call to <?php wp_title(); ?> in your template. Replace what you have with this: wp_title( '&#124;', true, 'right' ); Then, in functions.php (or in a child Theme functions.php; normal caveats apply), add the following: function wpse95147_filter_wp_title( $...


5

You can try this: /** * Modify the header title on single pages * but exclude the 'post', 'attachment' and 'page' post types. * * Header Title: Site Name | Post Type Label | Post Title * * Example: My Shopping Site | Products | Sony Playstation 4 */ function wpse_141145_wp_title( $title, $sep ) { if( is_single() && 'post' !== ( ...


5

Custom fields are perfectly suited for this purpose. WP Ref. IF the metabox titled Custom Fields is not visible on your post edit screen, you may need to enable the view with the Screen Options menu at the top right of your editor. For each post, simply create the secondary title and assign it a value. Where you would like this information to display, (...



Only top voted, non community-wiki answers of a minimum length are eligible