Получить содержание страницы, используя слаг

9

Я пытаюсь получить содержимое страницы, когда знаю только строку слага.

Есть ли функция для этого, или простой способ сделать это, или это случай, когда это делается с помощью SQL?

Огромное спасибо

Alex
источник

Ответы:

30

Используйте get_posts()и параметр, nameкоторый является слагом:

$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'));
Sisir
источник
4

Если на странице с слизнем в вопросе

Читайте об условных тегах :
is_page()также принимает в качестве аргумента слизняк.

Следовательно,

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

будет делать то, что вы хотите.

Если на другой странице

Если вас интересует, как получать содержимое поста / страницы на основе слага, когда его нет на указанной странице, вы также можете подать get_postsслаг. Это не задокументировано в кодексе.

Следующее извлечет идентификатор из пули:

$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;
PlanetHackers
источник