Wordpress: полная замена содержимого - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть коллекция новостных сообщений, и я добавил guid (sha1 идентификатора сообщения), и я хотел включить теги в ленту новостей (чтобы их было легче отображать на веб-странице).

Однако, когда я обновляю тег 'description', он просто добавляет его в ответ, а не удаляет его, поэтому после кода json_encode я получаю следующее:

"description": [
    "header subheader the original text with no tags",    // want to remove if possible.
    {
       "h1": "header",
       "h3": "subheader",
       "p": [
           "the original text",
           "with no tags",
       ]
    }

]

Здесьмой код:

add_action('rss2_item', function(){
  global $post;

  $output = '';
  $output .= '<id>' . sha1($post->ID) . '</id>';
  $output .= '<description>' . wpautop( $post->post_content ) . '</description>';

  echo $output;
});

1 Ответ

0 голосов
/ 18 сентября 2018

Действие rss2_item просто позволяет вам добавлять узлы к существующему элементу канала, вы не можете удалять узлы:

Хук действия rss2_item запускается сразу после вывода по умолчанию канала rss2.

Вам, вероятно, нужен пользовательский шаблон подачи, который может быть достигнут с помощью крючка do_feed_rss2.Из Кодекса :

function my_custom_rss() {

    if ( 'photos' === get_query_var( 'post_type' ) ) {
        get_template_part( 'feed', 'photos' );
    } 
    else {
        get_template_part( 'feed', 'rss2' );
    }
}
remove_all_actions( 'do_feed_rss2' );
add_action( 'do_feed_rss2', 'my_custom_rss', 10, 1 );
...