Получение содержимого страницы с помощью slug


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

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

Большое спасибо

Author: Alex, 2012-10-06

4 answers

Использовать 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'. Тогда вы могли бы получить более одного результата, потому что слизни не уникальны для разных типов сообщений.

 32
Author: fuxia, 2012-10-06 21:38:32

Вы можете получить страницу по ее названию, используя 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
Author: Sisir, 2012-10-06 20:30:04

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

Ознакомьтесь с условными тегами:
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;
 4
Author: Johannes Pille, 2012-10-06 21:20:50

Используйте get_page_by_path для извлечения объекта WP_Post, затем вы можете извлечь содержимое публикации и при необходимости отфильтровать вывод HTML.

Синтаксис

get_page_by_path( string $page_path, string $output = OBJECT, string|array $post_type = 'page' )

Пример:

Я использую этот код при заполнении шаблона темы со страницы, чтобы убедиться, что содержимое отображается в формате HTML:

<?php
$about = get_page_by_path('about'); 
$content = apply_filters( 'the_content', $about->post_content ); 
echo $content;
?>

Чтобы получить сообщение другого типа, введите два других параметра:

get_page_by_path('cat', OBJECT, 'animal');

Для получения дополнительной информации см. Функция WordPress Ссылка

Parameters

 3
Author: PlanetHackers, 2020-11-12 23:23:28