$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>$page = get_page_by_title CONTAINS|Programmer puzzle solving
最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

$page = get_page_by_title CONTAINS

matteradmin8PV0评论

Just wondering how to fetch a page by using 'title contains'. I can retrieve a page by using the following

<?php 
$page = get_page_by_title('Restaurants and Pubs');
?>

but how could I do 'page title contains "Pubs"'?

Thanks

Just wondering how to fetch a page by using 'title contains'. I can retrieve a page by using the following

<?php 
$page = get_page_by_title('Restaurants and Pubs');
?>

but how could I do 'page title contains "Pubs"'?

Thanks

Share Improve this question asked Sep 18, 2011 at 20:26 SparrwHawkSparrwHawk 1634 silver badges11 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 1

You should build a query using the Wordpress database class. Place this in your functions.php file

function get_page_by_title_search($string){
    global $wpdb;
    $title = esc_sql($string);
    if(!$title) return;
    $page = $wpdb->get_results("
        SELECT * 
        FROM $wpdb->posts
        WHERE post_title LIKE '%$title%'
        AND post_type = 'page' 
        AND post_status = 'publish'
        LIMIT 1
    ");
    return $page;
}

Use this in your theme:

$page = get_page_by_title_search('Foo Bar');
echo $page->post_title;
echo $page->post_content;
//etc...

This works pretty well for me. Would love to hear feedback on better ways to do it though. Thanks!

// Get all pages
$my_pages = get_pages();

// Get ID's of pages with "string" in title
foreach ($my_pages as $my_page) {

    if ( stristr($my_page->post_title, 'string') ) {

        $include_ids .= $my_page->ID . ',';

    }

}

// Output only pages with "string" in the title
$args = array(
  'include' => $include_ids,
);

wp_list_pages( $args );

Articles related to this article

Post a comment

comment list (0)

  1. No comments so far