使用Slug获取页面内容


9

当我只知道子弹字符串时,我试图获取页面内容。

是否有此功能,或者有简单的实现方法,还是通过SQL实现的?

非常感谢

Answers:


30

使用get_posts()和参数name是the:

$page = get_posts( array( 'name' => 'your-slug' ) );

if ( $page )
{
    echo $page[0]->post_content;
}

请注意,帖子类型get_posts()默认为'post'。如果您想使用页面 ...

$page = get_posts(
    array(
        'name'      => 'your-slug',
        'post_type' => 'page'
    )
);

如果要使用所有公共帖子类型(附件除外),请将帖子类型参数设置为'any'。这样一来,您会得到不止一个结果,因为在不同的帖子类型中,子弹并不是唯一的。


4

您可以使用get_page_by_title()功能按标题获得页面。

您可以像这样使用它(假设您要显示内容):

$page = get_page_by_title('Your Title'); 
$content = apply_filters('the_content', $page->post_content);
echo $content;

顺便说一句,要使用子弹获取页面:

function get_page_id_by_slug($slug){
    global $wpdb;
    $id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$slug."'AND post_type = 'page'");
    return $id;
}

$page = get_post(get_page_id_by_slug('my-slug'));

4

如果在有问题的页面上

阅读条件标签
is_page()还将子弹作为参数。

因此,

if( is_page( 'your-slug' ) ) {
     // fetch content
}

会做你想要的。

如果在另一页上

如果您对不在页面上时如何基于信息块获取帖子/页面内容感兴趣,也可以get_posts输入信息块。这没有记录在法典中。

下面的代码将从段中获取ID:

$args = array(
    'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );

// echo fetched content
echo $posts_from_slug[0]->post_content;

2

使用get_page_by_path

句法

<?php get_page_by_path( $page_path, $output, $post_type ); ?>

参量

例:

//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');

有关更多参考,请参阅WordPress函数参考。

我在从页面填充主题模板时使用此代码,

        $about = get_page_by_path('about'); 
        $content = apply_filters( 'the_content', $about->post_content ); 
        echo $content;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.