Function get page by name only works with one word names (5 posts)

  1. jami1955
    Posted 5 years ago #

    This code:
    <?php $events = _get_page_by_name(''); ?>
    gets the page with the name specified - but ONLY if the page name is one word. Any two or more word page name will not function. How can I call a page with this method that has two words in the name, ie: a page titled
    About Me
    the code <?php $events = _get_page_by_name('About Me'); ?> does not work. Any way to get that working with multiple word titled pages?

  2. Mark / t31os

    Posted 5 years ago #

    Try get_page_by_title, it seems to work with spaces just fine..

  3. jami1955
    Posted 5 years ago #

    Sorry, I didn't provide enuf info. My home page is diff. from my blog index page. You're right, that code will work. But I have another function at work, which is in my theme the ability to take the short content from a page, and print it somewhere else, like on the "homepage". Here's the code that does that:

    <?php $events = _get_page_by_name('events'); ?>

    The 2nd line of code calls the page name and writes the specified content ($events->post_content). That call cannot have any spaces in it. Hence it only works with page titles of one word. Is there a way to modify that second line of code, or set it up so that it can work with a page name of more than one word (which therefore has spaces in it)?

  4. Mark / t31os

    Posted 5 years ago #

    You're not passing the page name into the function, you're extracting the content($events->post_content) from the fetched post($events), and passing that into the function..

    The 2nd line of code calls the page name and writes the specified content ($events->post_content).

    Incorrect, the second line calls a function(_get_short_info), passing in the content property of a post object(which in this case is the $events variable).

  5. jami1955
    Posted 5 years ago #

    Thanks Mark for the explanation of how it's working. I wonder if there's a way to solve the problem I presented...? Can I get the funtion to work calling a page with a title of more than one word which means there's a space in it, by modifying that code? I've included the function from the theme functions.php below.


    function _get_page_by_name($page_name, $output = OBJECT) {
    	global $wpdb;
    	$page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type='page'", $page_name ));
    	if ( $page )
    		return get_page($page, $output);
    	return null;
    function _get_project_info( $what, $info ) {
    	$info = explode('<!--more-->', $info);
    	if( $what == 'image' )
    		return $info[0];
    	if( $what == 'small_image' ) {
    		$image_formats = array('.jpg"', '.png"', '.gif"');
    		$small_image = '';
    		foreach($image_formats as $image_format) {
    			if(strstr($info[0], $image_format)) {
    				$small_image = str_replace($image_format, '170x130' . $image_format, $info[0]);
    		return $small_image;
    	if( $what == 'short_info' )
    		return $info[1];
    	if( $what == 'long_info' )
    		return $info[2];
    	return '';


    function _get_short_info( $text ){
    	$t = explode('<!--more-->', $text);
    	return $t[0];

Topic Closed

This topic has been closed to new replies.

About this Topic