Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now
Sign InSign Up

PHP-J

PHP-J

PHP-J Navigation

  • Главная
  • Контакты
Поиск
Задать вопрос

Mobile menu

Close
Задать вопрос
  • Главная
  • Add group
  • User Profile
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Buy Points
Home/ Questions/Q 20270
Next
Answered
webcodeslinger
  • 0
webcodeslingerНовичок
Asked: 17 марта, 20222022-03-17T10:58:18+03:00 2022-03-17T10:58:18+03:00In: Wordpress (Вопросы и ответы)

Условно запрашивать пользовательские типы сообщений по метаданным сообщения для главной страницы блога?

  • 0

( Примечание модератора: исходное название вопроса было: «Пользовательский запрос: показать настраиваемые типы сообщений плюс настраиваемый тип сообщения с метаданными сообщения на главной странице блога»)

Мне нужна помощь с пользовательским запросом. У меня есть три настраиваемых типа сообщений: «Новости», «События», «Истории». На главной странице блога будут отображаться только новости и события. Клиент может пометить Историю как Новость, используя возможности плагина Verve Meta Boxes. Если пост в Stories имеет мета-ключ поста 'mark-as-news', то этот пост также должен отображаться на главной странице блога.

Итак, мне нужна помощь в написании вот этого:

Если в Stories есть метаданные постов, 'mark-as-news' то на главной странице блога будут отображаться настраиваемые типы постов News и Events, а также Stories в порядке убывания.

Может кто-нибудь помочь?

Спасибо!

Редактировать:

Возможно, лучше было бы сформулировать это?:

Показывать пользовательские типы сообщений «Новости» и «События», а если есть ключ 'mark-as-news' для post_meta, показывать «Истории».

custom-post-typespost-metaquery-posts
  • 10 10 ответов
  • 37 просмотров
  • 0 Followers
  • 0
Ответить
Share
  • Facebook

    10 ответов

    • Лучшие оценки
    • Старые
    • Недавние
    • Случайные
    1. Лучший ответ
      MikeSchinkel Гуру
      2022-03-17T10:58:53+03:00Добавлен ответ 17 марта, 2022 в 10:58 дп

      Привет @webcodeslinger:

      Вот как будет выглядеть базовый запрос MySQL для загрузки новостей и событий (это сильно упрощено по сравнению с тем, что на самом деле делает WordPress):

      SELECT * FROM wp_posts WHERE post_type IN ('news','events') 
      

      Вместо этого вам нужно что-то вроде этого (в MySQL есть более эффективные способы сделать это, но они более сложны в WordPress, и для большинства сайтов вы никогда не заметите разницы):

      SELECT * FROM wp_posts WHERE post_type IN ('news','events') 
        OR (post_type='stories' AND ID IN 
          (SELECT post_id FROM wp_postmeta WHERE meta_key='mark-as-news')
        )
      

      Итак… чтобы добавить этот дополнительный SQL к запросу вашего основного цикла, используйте 'posts_where' хук. Вы можете поместить следующий код ловушки в functions.php файл вашей темы (подойдет внизу файла) или в один из .php файлов плагина, если вы создаете плагин:

      add_action('posts_where','yoursite_posts_where',10,2);
      function yoursite_posts_where($where,$query) {
        global $wp_the_query;
        if (is_home() && $query===$wp_the_query) { // This means home page and the main loop
          global $wpdb;
          $where .= " OR ({$wpdb->posts}.post_type='actor' AND " . 
                    "{$wpdb->posts}.ID IN (" . 
                      "SELECT post_id FROM {$wpdb->postmeta} " .
                      "WHERE meta_key='mark-as-news')) ";
        }
        return $where;
      }
      
      • 0
      • Reply
      • rarst Гуру
        2022-03-17T10:59:54+03:00Replied to ответ 17 марта, 2022 в 10:59 дп

        Не повлияет ли это на большее количество запросов, чем только на домашнюю страницу? Вроде обычный крючок.

        • 0
        • Reply
      • MikeSchinkel Гуру
        2022-03-17T11:03:12+03:00Replied to ответ 17 марта, 2022 в 11:03 дп

        @Rarst — Вы абсолютно правы, это ускользнуло от меня. Я исправлю. Кстати, именно об этом я говорил здесь: core.trac.wordpress.org/ticket/15063

        • 0
        • Reply
      • webcodeslinger Новичок
        2022-03-17T11:04:49+03:00Replied to ответ 17 марта, 2022 в 11:04 дп

        Большое спасибо, Майк. И спасибо, что сделали мой вопрос более осмысленным. Пожалуйста, простите мою глупость, но я понятия не имею, что делать после добавления этого кода в мой файл functions.php.

        • 0
        • Reply
      • jerclarke Эксперт
        2022-03-17T11:06:03+03:00Replied to ответ 17 марта, 2022 в 11:06 дп

        Насколько я могу судить, это также ответ на вопрос «Каков наилучший способ изменить WP_Query по умолчанию, не затрагивая последующие почтовые запросы. $query===$wp_the_query — это то, что я не осознавал, что это возможно 🙂

        • 0
        • Reply
      • MikeSchinkel Гуру
        2022-03-17T11:07:27+03:00Replied to ответ 17 марта, 2022 в 11:07 дп

        @Jeremy Clarke — @Denis-de-Bernardy $query===$wp_the_query недавно предложил мне на trac, так что реквизит идет к нему.

        • 0
        • Reply
      • webcodeslinger Новичок
        2022-03-17T11:10:45+03:00Replied to ответ 17 марта, 2022 в 11:10 дп

        Спасибо, Рарст. По вашему мнению, учитывая, что два из этих настраиваемых типов сообщений нуждаются в настраиваемых полях, было бы лучше, если бы они были категориями, а не пользовательскими типами сообщений? Спасибо!

        • 0
        • Reply
      • MikeSchinkel Гуру
        2022-03-17T11:14:17+03:00Replied to ответ 17 марта, 2022 в 11:14 дп

        @webcodeslinger — Для того, что вы хотите, вы добавили бы сложности к SQL, необходимому, если бы вы использовали категории, и вы потеряли бы все преимущества пользовательских типов сообщений.

        • 0
        • Reply
      • webcodeslinger Новичок
        2022-03-17T11:19:15+03:00Replied to ответ 17 марта, 2022 в 11:19 дп

        @MikeSchinkel — Спасибо, я так и думал.

        • 0
        • Reply
    2. rarst Гуру
      2022-03-17T11:08:37+03:00Добавлен ответ 17 марта, 2022 в 11:08 дп

      То, что вы хотите, легко описать, но сложно заставить работать с WP API. Я не видел красивого и аккуратного решения до сих пор.

      По сути, WP-запрос — это причудливая оболочка для SQL-запроса, которая получает строки сообщений из базы данных. То, что вам нужно, — это практически два разных запроса для двух разных наборов сообщений. В настоящее время WP не обрабатывает такую ​​логику ИЛИ в запросах.

      Вы можете сделать два запроса и объединить результаты, но в этом случае будет сложно правильно разбить страницы.

      Вероятно, это одна из причин, по которой темы в стиле журналов стали популярными, потому что они специализируются на показе нескольких наборов сообщений в нескольких областях, а не на сложном сочетании контента.

      • 0
      • Reply

    Оставить ответ
    Отменить ответ

    You must login to add an answer.

    Forgot Password?

    Need An Account, Sign Up Here

    Sidebar

    Ask A Question

    Stats

    • Questions : 7k
    • Answers : 38k
    • Best Answers : 4k
    • Users : 5k
    • Popular
    • Answers
    • netconstructorcom

      Лучшая подборка кода для вашего файла functions.php [закрыто]

      • 100 Answers
    • MikeSchinkel

      Объективные рекомендации по разработке плагинов? [закрыто]

      • 84 Answers
    • EAMann

      Как легко перенести установку WordPress из стадии разработки в рабочую ...

      • 60 Answers
    • Karenfreva
      Karenfreva added an answer [url=https://loans-online-apply.com/]loan[/url] loans [url=https://youloan24.com/]payday loans online[/url] loans online [url=https://loanstoonline.com/]loan[/url] payday loans 13 августа, 2022 at 4:48 пп
    • LeighaPlone
      LeighaPlone added an answer [url=https://slotsonfreegames.com/]vegas slots[/url] caesar slots 13 августа, 2022 at 4:48 пп
    • Karenfreva
      Karenfreva added an answer [url=https://loans-online-apply.com/]small loans[/url] small loans [url=https://youloan24.com/]online loans[/url] loans [url=https://loanstoonline.com/]loan[/url] loans 13 августа, 2022 at 4:06 пп

    Похожие вопросы

    • nmystic

      Как назначить файл по умолчанию в «Внешний вид > Редактор»?

      • 2 Answers
    • billeisenhauer

      Как показать полную публикацию на главной странице

      • 5 Answers
    • atticus

      Создание пользовательских запросов AJAX

      • 6 Answers

    Лучшие участники

    rarst

    rarst

    • 0 Questions
    • 5k Points
    Гуру
    bainternet

    bainternet

    • 0 Questions
    • 5k Points
    Гуру
    janfabry

    janfabry

    • 0 Questions
    • 3k Points
    Гуру

    Trending Tags

    categories comments custom-field custom-post-types custom-taxonomy customization functions images menus multisite pages permalinks php plugin-development plugin-recommendation plugins posts theme-development themes widgets wp-admin

    Footer

    © 2022

    Вставить/изменить ссылку

    Введите адрес назначения (URL)

    Или сделайте ссылку на существующий материал

      Поисковый запрос не задан. Показаны недавние элементы. Воспользуйтесь поиском или клавишами вверх/вниз, чтобы выбрать элемент.