Спрашиваем и отвечаем по Wordpress-14

SeVlad
На сайте с 03.11.2008
Offline
1609
#971
eavy:
Просто записи спарсенные.

Источник абсолютно не важен. Важно как происходила запись в базу. ВП не даст записать пост без автора (и много чего ещё). Значит запись происходит прямо в базу, в обход ВП. Это ахтунг.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
DD
На сайте с 24.05.2020
Offline
19
#972

........... удалил, решено

Непродажная подпись
HM
На сайте с 14.01.2012
Offline
223
#973
SeVlad:
ВП не даст записать пост без автора

<?php

$new = [ 'post_author' => 0, // или 'post_author' => '',
'post_title' => 'hello world',
'post_content' => 'hello world',
'post_status' => 'publish'
];

wp_insert_post( $new );

https://prnt.sc/sxti0m

https://prnt.sc/sxtj0f

SeVlad
На сайте с 03.11.2008
Offline
1609
#974
hakuna matata:
'post_author' => 0

10 переданных ID авторов.

---------- Добавлено 11.06.2020 в 13:47 ----------

hakuna matata:
https://prnt.sc/sxtj0f

А вот тут прекрасно видны даты, которые не передавались.

S
На сайте с 30.09.2016
Offline
469
#975
eavy:
И в базе у post_author стояло значение "0".
SeVlad:
Значит запись происходит прямо в базу, в обход ВП.
hakuna matata:
'post_author' => 0,
SeVlad:
10 переданных ID авторов.

И что? Выходит – не "значит".

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
SeVlad
На сайте с 03.11.2008
Offline
1609
#976
Sitealert:
И что? Выходит – не "значит".

То, что даже судя по описанию функции - она безопасно вставляет/обновляет запись в базе данных, проверяя данные. ID=0 в принципе быть не может.

Раньше точно нельзя было залить пост не указав автора (или присваивался админ я уже не помню). Может конечно что-то поломали в последних версиях, но вряд ли.

Хотя конечно нужно это проверить.

Но в любом случае это косяк того, кто писал скрипт заливки в ВП.

S
На сайте с 30.09.2016
Offline
469
#977
SeVlad:
То, что даже судя по описанию функции - она безопасно вставляет/обновляет запись в базе данных, проверяя данные. ID=0 в принципе быть не может.

Я посмотрел код функции.

Проверка $post_date идёт на empty( )

Проверка $post_author идёт на isset( )

Так что "в принципе быть может". ;)

Что косяк писавшего скрипт – согласен.

SeVlad
На сайте с 03.11.2008
Offline
1609
#978
Sitealert:
Так что "в принципе быть может".
Что косяк писавшего скрипт – согласен.

Да, я перепроверил и согласен - "в принципе" быть может. (в см может записаться. Я выше имел ввиду, то id=0 не может быть в базе)

Но только в том случае если явно указать бредовый параметр - 'post_author' => 0.

Если его не указывать вообще, то будет автоматически подставлен id существующего юзера. Я полагаю с минимальным ID имеющим права записи.

HM
На сайте с 14.01.2012
Offline
223
#979
SeVlad:
Если его не указывать вообще, то будет автоматически подставлен id существующего юзера. Я полагаю с минимальным ID имеющим права записи.

$new = [
    'post_title' => 'hello world',
'post_content' => 'hello world',
'post_status' => 'publish'
];

$post_id = wp_insert_post( $new );
var_dump ( $post_id );
var_dump ( get_post_field ('post_author', $post_id) );
int(39970)
string(1) "0"
SeVlad
На сайте с 03.11.2008
Offline
1609
#980
hakuna matata:
string(1) "0"

А вот как по факту:

801 - с 'post_author' => 0,

802 - без этой строки.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий