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

  1. Я создал дополнительный файл содержимого и вставил пользовательский текст для категории (и относится к этой категории), чтобы отображать (на случайной основе) во всех сообщениях, относящихся к этой категории, и все работает нормально.

Это код, который я использовал: –

<?php add_filter('the_content', 'custom_category_text'); function custom_category_text($content) { global $post; $office = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." ); $office_random = array_rand($office, 2); $office1 = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." ); $office1_random = array_rand($office1, 2); $custom_category_text = '<p> ' . $office[$office_random[0]] . ' ' . $office1[$office1_random[0]] . '</p>'; // Category ID = 1 if (in_category('1')) { $content = $content . $custom_category_text; } return $content; } ?> 

В приведенном выше коде моя категория – это офис, и я определил собственный текст с именем $ office и $ office1 (для 2 абзацев пользовательского текста), чтобы я помнил, что я делаю.

  1. У меня есть 2 категории, и теперь вы хотите вставить дополнительный случайный текст, относящийся к 2-й категории, и чтобы каждый экземпляр пользовательского текста отображался во всех сообщениях, определенных его категорией.

Это измененный код ниже, но пользовательский текст для идентификатора категории 2 вообще не отображается.

 <?php add_filter('the_content', 'custom_category_text'); function custom_category_text($content) { global $post; $office = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." ); $office_random = array_rand($office, 2); $office1 = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." ); $office1_random = array_rand($office1, 2); $home = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." ); $home_random = array_rand($home, 2); $home1 = array( "Pellentesque arcu nisi, pellentesque nec gravida quis.", "Pellentesque arcu nisi." ); $home1_random = array_rand($home1, 2); $custom_category_text = '<p> ' . $office[$office_random[0]] . ' ' . $office1[$office1_random[0]] . '</p>'; // Category ID = 1 if (in_category('1')) { $content = $content . $custom_category_text; } return $content; $custom_category_text = '<p> ' . $home[$home_random[0]] . ' ' . $home1[$home1_random[0]] . '</p>'; // Category ID = 2 if (in_category('2')) { $content = $content . $custom_category_text; } return $content; } ?> 

Так что это моя проблема, и я надеюсь, что кто-то может помочь мне исправить это – пользовательский текст для 2-й категории вообще не отображается.

Большое спасибо pete

На самом деле это не похоже на проблему WordPress, но, к сожалению, недостаток навыков PHP. Ваша проблема заключается в этом фрагменте кода

 $custom_category_text = '<p> ' . $office[$office_random[0]] . ' ' . $office1[$office1_random[0]] . '</p>'; // Category ID = 1 if (in_category('1')) { $content = $content . $custom_category_text; } return $content; $custom_category_text = '<p> ' . $home[$home_random[0]] . ' ' . $home1[$home1_random[0]] . '</p>'; // Category ID = 2 if (in_category('2')) { $content = $content . $custom_category_text; } return $content; 

Код для категории 2 никогда не будет работать, поскольку вы уже вернули переменную, и вы устанавливаете два разных значения для двух экземпляров $custom_category_text . Вы можете исправить это при правильном использовании инструкции if else . Вы можете попробовать что-то вроде этого

 if (in_category('1')) { // Category ID = 1 $custom_category_text = '<p> ' . $office[$office_random[0]] . ' ' . $office1[$office1_random[0]] . '</p>'; $content = $content . $custom_category_text; }elseif(in_category('2')) { // Category ID = 2 $custom_category_text = '<p> ' . $home[$home_random[0]] . ' ' . $home1[$home1_random[0]] . '</p>'; $content = $content . $custom_category_text; } return $content; 

Просто замените исходный код в верхней части моего ответа на это