Stack Exchange Network

Stack Exchange network consists of 175 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.

Visit Stack Exchange

Hot answers tagged

30

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


29

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( $post_title_like ) ) . '%\''; ...


29

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.


25

Try with this: <?php echo get_the_title( $ID ); ?>


23

<?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>";   } ?>


19

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.


19

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 ...


18

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 ...


16

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 );


15

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 ) {...


12

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 :)


11

I ran your filter in my development area. It didn't work. Then I switched off the Yoast SEO plugin, which I knew was also messing with the page title. Then it worked. So my suggestion would be another plugin is messing with it. In the case of Yoast, it was a filter call to pre_get_document_title returning non empty. In that case wp_get_document_title is ...


11

Problem Description: Let me rephrase the question first. You want to: Set new title to all post and page type from a meta field. You want this to happen everywhere (home page, single page, widgets etc.) However, you don't want this title change to happen if the title is on the Navigation Menu. Solution: Before I give you the CODE, let me explain a few ...


10

Here is how you do it, First remove woocommerce single title action, and create your own function to handle the title, later add back the action using your newly created function. <?php remove_action('woocommerce_single_product_summary','woocommerce_template_single_title',5); add_action('woocommerce_single_product_summary', 'woocommerce_my_single_title'...


9

The two title tags can be explained as that you are using a theme that is written for Wordpress4.1 and actually is using 4.1. As from 4.1 you don't need to call wp_title() in the head any more, you can make use of new title_tag theme support tag which automatically adds the wp_title() tag in the header The parent theme you are using are most probably ...


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.


8

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']...


8

/** * 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 = '&...


8

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; ...


8

wp_get_document_title() has some interesting filters - pre_get_document_title and document_title_parts. /** * Filter the parts of the document title. * * @since 4.4.0 * * @param array $title { * The document title parts. * * @type string $title Title of the viewed page. * @type string $page Optional. Page number if paginated. * ...


8

A post or page has only one title, the title tag <title> is the document title. The filter wp_title filters the output of wp_title() function, which was used before to output the title of the document. In WordPress 4.1, the title-tag support in themes was introduced and wp_get_document_title() is used instead of wp_title(). So, if your theme supports ...


7

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; ...


7

You just need to use get_permalink( $id ) and get_the_title( $id ).


7

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 ) {...


7

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 ...


7

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 ...


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 ( '...


7

You can see everything added to wp_head in the file /wp-includes/default-filters.php. If your theme supports the title tag, you can remove it entirely with remove_action: remove_action( 'wp_head', '_wp_render_title_tag', 1 ); Though it may be simpler/better to use remove_theme_support( 'title-tag' ) in a child theme, which is what _wp_render_title_tag ...


7

Use in_the_loop() conditional tag to make sure you are modifying the title inside the Loop and to prevent the hook changing titles somewhere else: function customize_wishlist_title( $title ){ $current_user = wp_get_current_user(); $loggeduser = $current_user->user_login; // give attention to the following condition: if ( is_page( 258 ) &...


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