Изменить предыдущие и следующие записи по ссылкам на текущие авторы Другие записи

Я создал пользовательскую gallery типа публикации.

Как изменить previous post и next post ссылку для ссылки на текущие должности авторов?

Ссылка Previous и Next Post не должна отображаться, если больше сообщений нет

введите описание изображения здесь

Solutions Collecting From Web of "Изменить предыдущие и следующие записи по ссылкам на текущие авторы Другие записи"

Правильный способ сделать это с WordPress 4.4 выглядит следующим образом:

 add_filter( "get_next_post_where", function($where, $in_same_term, $excluded_terms, $taxonomy, $post){ $where .= " AND p.post_author='".$post->post_author."'"; return $where; }, 10, 5); add_filter( "get_previous_post_where", function($where, $in_same_term, $excluded_terms, $taxonomy, $post){ $where .= " AND p.post_author='".$post->post_author."'"; return $where; }, 10, 5); 

Примечание. Пожалуйста, не следуйте принятому ответу levidia1221, поскольку он включает в себя модификацию WordPress Core, что является ужасной идеей. Изменение основного средства означает, что вы не можете обновлять WordPress без потери ваших изменений, что представляет собой огромный риск для безопасности. Если в функции, которую вы хотите изменить, нет крючков, лучше скопировать нужные вам функции и изменить их в своей теме или плагине, а не напрямую изменять основные файлы.

Чтобы ограничить отправку сообщений тем же авторам и категориям, найдите файл link-template.php в папке / wp-includes / и отредактируйте с помощью своего любимого текстового редактора (Notepad ++ для меня). В этом файле вы измените четыре функции. Найдите в файле link-template.php следующие строки:

 function previous_post_link($format='« %link', $link='%title', $in_same_cat = false, $excluded_categories = '') { adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, true); } 

Измените это следующим образом:

 function previous_post_link($format='« %link', $link='%title', $in_same_cat = false, $excluded_categories = '', $is_author = false) { adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, true, $is_author); } 

Ниже предыдущих строк кода вы должны найти следующее:

 function next_post_link($format='%link »', $link='%title', $in_same_cat = false, $excluded_categories = '') { adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, false); } 

Измените это следующим образом:

 function next_post_link($format='%link »', $link='%title', $in_same_cat = false, $excluded_categories = '',$is_author = false) { adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, false, $is_author); } 

Эти изменения малы. Вы должны заметить, что только внесенные изменения заключались в добавлении $ is_author = false к параметрам функции, а $ is_author – к вызову при вызове funny_post_link.

В следующей функции вы добавите еще один параметр и отрегулируете запрос SELECT, который вытягивает в следующем / предыдущем сообщении. Найдите следующую строку, которая должна выглядеть примерно так:

 function get_adjacent_post($in_same_cat = false, $excluded_categories = '', $previous = true) { ... } 

Этот блок довольно длинный, поэтому я только покрываю то, что меняется. В этой строке добавьте тот же параметр, что и раньше ($ is_author = false):

 function get_adjacent_post($in_same_cat = false, $excluded_categories = '', $previous = true, $is_author = false) { ... } 

Затем в этой же функции найдите переменную $ where, как показано ниже (примерно 50 строк в функции).

 $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $posts_in_ex_cats_sql", $current_post_date, $post->post_type), $in_same_cat, $excluded_categories ); 

То, что мы хотим сделать дальше, это изменить эту переменную, чтобы сохранить автора только тогда, когда $ is_author истинно. Для этого нужно проверить логическое значение $ is_author и немного добавить в конце переменной $ where.

 $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $posts_in_ex_cats_sql", $current_post_date, $post->post_type), $in_same_cat, $excluded_categories ); if($is_author) $where .= " AND p.post_author='".$post->post_author."'"; 

Для окончательного изменения в файле link-template.php найдите следующую функцию:

 function adjacent_post_link($format, $link, $in_same_cat = false, $excluded_categories = '', $previous = true) { if ( $previous && is_attachment() ) $post = & get_post($GLOBALS['post']->post_parent); else $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous); 

Измените эту функцию с помощью $ is_author в функции смежная_поставка_связь и добавив ее в вызов get_adjacent_post:

 function adjacent_post_link($format, $link, $in_same_cat = false, $excluded_categories = '', $previous = true, $is_author = false) { if ( $previous && is_attachment() ) $post = & get_post($GLOBALS['post']->post_parent); else $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous, $is_author); 

Теперь вы готовы использовать эту новую опцию в файлах тем. Чтобы «активировать» функцию сохранения автора, используйте что-то вроде этого в файле single.php:

 <?php previous_post_link( '%link', '' . _x( '&larr;', 'Previous post link', 'twentyten' ) . ' %title','true','','true' ); ?> <?php next_post_link( '%link', '%title ' . _x( '&rarr;', 'Next post link', 'twentyten' ) . '','true','','true' ); ?> 

Установка последнего значения в значение «true» активирует функцию сохранения автора для этой ссылки. Это гарантирует, что ссылка останется в пределах того же автора, а также с той же датой.