通过邮局名称,而不是ID后获得(get post by post name instead of i

2019-09-24 04:21发布

好吧,我有这个当前的代码。

<?php

$post_id = 266;
echo "<div id='widgets-wrapper3'><div id='marginwidgets' style='overflow: auto; max-    width: 100%; margin: 0 auto; border: none !important;'>";
$queried_post = get_post($post_id); 
echo "<div class='thewidgets'>";
echo substr($queried_post->post_content, 0, 500);
echo "<a href='".get_permalink( 26 )."' title='Read the whole post' class='rm'>Read     More</a>";
echo "</div>";

echo "</div></div>";

?>

正如你可以看到上面的代码时,程序将获得由ID的帖子,但我的永久链接搜索引擎优化的目的变成交名称,而不是帖子的ID的。 我如何获得通过邮局名称后?

希望这里有人能弄明白。 谢谢。

Answer 1:

get_page_by_path()

WordPress的有一个内置的功能,可能会帮助,谨慎的几句话。

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

下面是相关法典条目 。

为了得到一个职位,而不是一个页面,你只需要提供“后”为$post_type参数,通常OBJECT (不带引号)作为$output类型,就像这样:

<?php get_page_by_path( 'my_post_slug', OBJECT, 'post' ) ?>

注意:此功能不检查匹配后的公布或私有状态。 这是伟大的,如果你正在寻找的产品和附件,但可以为文章和网页(即汇票,私人职位等)有问题

注意: 如果你正在寻找一个页面,该页面是分层次(即:它有一个父),那么您需要提供完整的路径,那就是:“parent_page_slug / my_page_slug”。

WP_Query / get_posts()

如果这些是你的问题,那么你应该考虑只使用WP_Query类的让你的岗位name

$found_post = null;

if ( $posts = get_posts( array( 
    'name' => 'my_post_slug', 
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 1
) ) ) $found_post = $posts[0];

// Now, we can do something with $found_post
if ( ! is_null( $found_post ) ){
    // do something with the post...
}


Answer 2:

function get_post_by_name($post_name, $output = OBJECT) {
    global $wpdb;
        $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type='post'", $post_name ));
        if ( $post )
            return get_post($post, $output);

    return null;
}

这个东西。



文章来源: get post by post name instead of id
标签: php wordpress