anzarsh

Рейтинг
7
Регистрация
23.11.2016
Интересы
Верстка и натяжка на wp
End1:
Как всё сложно с вами, сударь :)

Не даёт wordpress указать один и тот же postname 2 раза.

Например вот так никак не получается:
site.ru/articles/postname.html
site.ru/news/postname.html

да я понял Вас, я почему то подумал, что таких ограничений нет в wp. По Вашему вопросу можно сделать следующее

function wp_cpt_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {

if ( in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) )
return $slug;

global $wpdb, $wp_rewrite;

// store slug made by original function
$wp_slug = $slug;

// reset slug to original slug
$slug = $original_slug;

$feeds = $wp_rewrite->feeds;
if ( ! is_array( $feeds ) )
$feeds = array();

$hierarchical_post_types = get_post_types( array('hierarchical' => true) );
if ( 'attachment' == $post_type ) {
// Attachment slugs must be unique across all types.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1";
$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_ID ) );

if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_attachment_slug', false, $slug ) ) {
$suffix = 2;
do {
$alt_post_name = substr ($slug, 0, (200 - ( strlen( $suffix ) + 1 )) ) . "-$suffix";
$post_name_check = $wpdb->get_var( $wpdb->prepare($check_sql, $alt_post_name, $post_ID ) );
$suffix++;
} while ( $post_name_check );
$slug = $alt_post_name;
}
} elseif ( in_array( $post_type, $hierarchical_post_types ) ) {
if ( 'nav_menu_item' == $post_type )
return $slug;
// Page slugs must be unique within their own trees. Pages are in a separate
// namespace than posts so page slugs are allowed to overlap post slugs.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1";
$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_ID, $post_parent ) );

if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug ) || apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent ) ) {
// $suffix = 2;
// do {
$alt_post_name = substr( $slug, 0, (200 - ( strlen( $suffix ) + 1 )) );// . "-$suffix";
// $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID, $post_parent ) );
// $suffix++;
// } while ( $post_name_check );
$slug = $alt_post_name;
}
} else {
// Post slugs must be unique across all posts.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";
$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_ID ) );

if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type ) ) {
// $suffix = 2;
// do {
$alt_post_name = substr( $slug, 0, (200 - ( strlen( $suffix ) + 1 )) );// . "-$suffix";
// $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID ) );
// $suffix++;
// } while ( $post_name_check );
$slug = $alt_post_name;
}
}

return $slug;
}
add_filter('wp_unique_post_slug', 'wp_cpt_unique_post_slug', 10, 6);
- если это вставить в functions.php, то wp не будет проверять ссылки. Я просто закомментировал те места, где прибавляется суфикс. Нужно конечно сделать все по умному. Сейчас у меня мозгов не хватит. Если у Вас не получится я завтра отпишу как правильно. Постараюсь)
End1:
..так-то есть проблема ))
Wordpress не даёт указать одино и то же url страницы в разных категориях.

Url конечно должны быть разными. Но slug - это не есть url

End1:
Здравствуйте!
Сайт надо перевести на WP. И есть определенная структура, которую надо повторить.

Вопрос: есть ли возможность реализовать средствами вордпресса следующую ситуацию:
site.ru/articles/page.html
site.ru/news/page.html
т.е., чтобы в разных категориях были страницы с одинаковыми slug?

Спасибо

Да. Проблем не будет.

Я с joomla не знаком, но могу предположить что ошибка может быть вызвана тем, что не перенесли необходимый код в контроллер. Скорее всего ваш hmenu там должен был наследовать какой-нибудь класс. И скорее всего метод genHMenu тоже там переопределялся или определялся.

data: 'filters=' + serialize,
dataType: 'json',

- вот эти две строчки можете закомментировать или убрать вообще.

var serialize = JSON.stringify(filters);
- этого делать тоже не надо, а url напишите следующим образом:

url: 'index.php?route=module/ajax_filter/getProducts&filter='+filters.tab,

а на стороне сервера принимайте

echo json_encode($_GET['filter']);

Если у Вас cms не будет ничего тормозить, то должно заработать.

Sitealert:
Нет, это если бы немного растянуть, то можно - а если в разы, то некрасиво будет; repeat-y лучше.

Согласен. Можно так же похожим цветом закрашивать...хотя в данном макете все-таки будет лучше repeat-y.

diman3210:
echo '
<h1>'.$result[0]["name"].'</h1>
<div style="height: 250px; float: left; margin-right: 10px; display: flex; display: -webkit-flex;"><img style="width: 350px; margin: auto 0;" src="http://credits-pl.ru/img/mk/'.$result[0]["img"].'" alt="'.$result[0]["name"].'"></div>
<p><strong>Название:</strong> '.$result[0]["name"].'</p>
<p><strong>Сайт:</strong> <a href="'.$result[0]["link_offer"].'" target="_blank" rel="nofollow">'.$result[0]["site"].'</a></p>
<p><strong>Возраст:</strong> '.$age.'</p>
<p><strong>Необходимо:</strong> '.$result[0]["need"].'</p>
<div style="clear: both;">
<h2>О компании</h2>
'.$result[0]["description"].'
<h2>Условия</h2>
'.getLoansbyMFOID ($id).'
<h2>Получение</h2>
'.$result[0]["how_get"].'
<h2>Погашение</h2>
'.$result[0]["how_give"].'
'.$adresses.'
<h2>Акции, скидки</h2>
'.$result[0]["stocks"].'
'.$personal_account.'
<h2>Контакты, реквизиты</h2>
'.$result[0]["contacts"].'
';

- вот это echo содержит в себе функцию getLoansbyMFOID, которая тоже вызывает echo, и прежде чем все данные подставятся и все будет отправлено клиенту, срабатывает echo внутри функции и получается, что то что внутри функции отправляется клиенту вперед того, что описано выше. Попробуйте подменить echo на return.

Ну во первых правильнее было бы подключить include("getloans.php"); за пределами getMFObyID и желательно подключать через require_once "getloans.php"; нужно конечно посмотреть getLoansbyMFOID прежде чем что то говорить. Возможно в этой функции вместо return стоит echo, но утверждать трудно.

for ($result = array(); $row = mysqli_fetch_assoc($query); $result[] = $row) {} - эту строчку можно заменить $result = mysqli_fetch_all($query, MYSQLI_ASSOC); - если я все правильно помню, результат будет тот же.

Скорее всего Вам лучше будет разделить три фоновых изображения для хедера, футера и блока с контентом. Самое легкое это поставить background-size: cover; - тогда фон будет растягиваться, но соответственно и размываться.

Всего: 69