ব্যবহারকারীরা সাইন আপ করার পরে ইনস্টল করতে কোনও থিম নির্বাচন করার অনুমতি দিন


11

নতুন সাইট সাইনআপ পৃষ্ঠা থেকে কোন ব্যবহারকারীকে কোন থিমটি ইনস্টল করতে চান তা চয়ন করার অনুমতি দেওয়া কি সম্ভব? এবং একবার সাইটটি তৈরি হয়ে গেলে, তারা অবশ্যই যে কোনও থিম নির্বাচন করেছিল এটি ইনস্টল হয়ে যায়।

আমি wp_get_themes পেয়েছি । আপনি কীভাবে উপলভ্য সমস্ত থিমের সাথে ড্রপডাউন মেনুটিকে প্রাক-জনপ্রিয় করতে যাবেন? কীভাবে থিমের তথ্যকে আসল সাইনআপ প্রক্রিয়ায় পাস করবেন যাতে সঠিক থিমটি সহ সাইটটি তৈরি করা হয়?

কেউ যদি গ্র্যাভিটি ফর্মগুলির সাথে এটি কীভাবে করতে জানেন তবে সেটিও দুর্দান্ত।

হালনাগাদ:

আমার এখন অবধি যা আছে তা এখানে, এটি শিশু থিমগুলিকে বিবেচনায় নেয় না, তার পরে এটি কাজ করবে

এই ফাংশনটি রেডিও বোতামগুলির সাথে থিমগুলির একটি তালিকা আউটপুট করে, _POST ['কাস্টম_থমে'] এ নির্বাচিত থিমটি সংরক্ষণ করবে

/**
* Show list of themes at bottom of wp-signup.php (multisite)
*/
function 70169_add_signup_extra_fields() { ?>

Themes<br />
<?php
$themes = wp_get_themes();

foreach ( $themes as $theme ) {
    $theme_name = $theme['Name'];
    $theme_stylesheet = $theme->stylesheet;
?>
    <label>
        <input id="<?php echo $theme_stylesheet; ?>" type="radio" <?php if ( isset( $_POST['custom_theme'] ) ) checked( $_POST['custom_theme'], $theme_stylesheet ); ?> name="custom_theme" value="<?php echo $theme_stylesheet; ?>" ><?php echo $theme_name; ?>
    </label>

<?php } ?>

<?php }
add_action( 'signup_extra_fields', '70169_add_signup_extra_fields' );

আমি ভেবেছিলাম যে থিমের মানটি সাইট তৈরির পথে পাস করার উপায় হিসাবে আমি একটি লুকানো ক্ষেত্র যুক্ত করব। যদিও এর সাথে কিছু ভুল আছে - শেষ ধাপে এটির মূল্য হারাবে, এখনও কেন তা নিশ্চিত নয়।

/**
 * Add a hidden field with the theme's value
 */
function 70169_theme_hidden_fields() { ?>

<?php
    $theme = isset( $_POST['custom_theme'] ) ? $_POST['custom_theme'] : null;
?>
<input type="hidden" name="user_theme" value="<?php echo $theme; ?>" />
<?php }
add_action( 'signup_hidden_fields', '70169_theme_hidden_fields' );

এবং অবশেষে নতুন তৈরি করা সাইটটিতে থিমের নামটি স্থান দেওয়ার জন্য একটি ফাংশন। আমি যদি ভেরিয়েবলগুলি হার্ডকোড করি তবে এটি কাজ করে তবে আমি এখনও কাস্টম_থমেটির মানটি পাস করতে পারছি না। সাইটটি দুর্দান্ত তৈরি হয়েছে তবে টেমপ্লেট এবং স্টাইলশিটের বিকল্পগুলি ফাঁকা। আমি চেষ্টা করুক না কেন এটি কেবল মূল্য পাচ্ছে না। আমার ধারণা আমি আগে তৈরি গোপন ক্ষেত্রটি অ্যাক্সেস করতে আমাকে G _GET ব্যবহার করতে হবে। আবার, এই মুহুর্তে আমি যা করতে চাই তা হ'ল একই থিমের নামটি টেম্পলেট এবং স্টাইলশিট বিকল্পগুলিতে প্রেরণ করা, আমি এটি কাজ করার পরে কীভাবে সেগুলি আলাদা করতে পারি তা নির্ধারণ করব।

/**     
 * Create the new site with the theme name
*/
function 70169_wpmu_new_blog( $blog_id ) {

// need to get this working, use $_GET?
//    $theme = ???

    update_blog_option( $blog_id, 'template', $theme );  // $theme works if I hardcode it with a theme name
    update_blog_option( $blog_id, 'stylesheet', $theme );
}

add_action( 'wpmu_new_blog', '70169_wpmu_new_blog' );

1
আমি মনে করি এটি একটি ভাল প্রশ্ন, +1
আন ট্রান

1
তাত্ত্বিকভাবে নিবন্ধকরণ ফর্মটিতে অতিরিক্ত ক্ষেত্র যুক্ত করে এটি সম্ভব, তবে থিমগুলি কেমন দেখাচ্ছে ব্যবহারকারী কীভাবে জানবেন? পূর্বরূপটি নিবন্ধকরণ প্রক্রিয়াটিকে আরও জটিল করে
তুলবে imho

@ krembo99 ফেয়ার পয়েন্ট। আমি প্রশ্নের জন্য এটি সরল করার চেষ্টা করেছি। আমি থাম্বনেইল পূর্বরূপগুলি সহ রেডিও ক্ষেত্রগুলি ব্যবহার করতে যাচ্ছিলাম বা প্রতিটি থিম পৃষ্ঠায় একটি বোতাম ছিল যা "এই থিমটির সাথে সাইনআপ" বলেছিল। বোতামটি থিমের নামটি সাইনআপ ফর্মের মধ্যে সহজভাবে প্রেরণ করবে। ভেবেছিলাম আমি সহজ শুরু করব :)
অ্যান্ড্রু

1
ঠিক আছে - সেক্ষেত্রে আপনি যদি সত্যিই এটি করতে চান তবে আমার উত্তর দেখুন ..
krembo99

উত্তর:


5

আপনি যা চান তা করতে, আপনি যা খুশি ক্ষেত্রগুলি যুক্ত করতে পারেন এবং তারপরে এগুলি সংরক্ষণ করতে পারেন user_meta...

(কেউ এগুলিকে $user_infoঅ্যারে / অবজেক্টেও সংরক্ষণ করতে পারে তবে কী লাভ হবে তা আমি নিশ্চিত নই ..)

  // Render Form Fields
add_action('register_form','k99_register_form_add_theme_field');
// Checking
add_action('register_post','k99_check_fields',10,3);
// Insert Data
add_action('user_register', 'k99_register_new_register_fields');

// Render the form with the additional radio field 
function k99_register_form_add_theme_field(){
?>

<p>
<label>Theme<br />
 <?php $themes=wp_get_themes();
foreach ($themes as $theme ) {
$theme['Name'] = sanitize_title_with_dashes($theme['Name']);
$checked = checked( $_POST['custom_theme'], 1 );
 echo '<input id="custom_theme'.$theme['Name'] .'" type="radio" name="custom_theme" value="'. $theme['Name'] .'" '.$checked.'>  '. $theme['Name'].'<br />';
$custom_theme = $_POST['custom_theme'];
} ?>
</label>
</p>

<?php
}

// checking , sanitation etc .. of course this is not done...

function k99_check_fields($login, $email, $errors) {
global $custom_theme;
if ($_POST['custom_theme'] == '') {
$errors->add('empty_theme', "<strong>Error:</strong> Please select theme.");
}
else {
$custom_theme = $_POST['custom_theme'];
}
}

// Write to DB ... if you will..
function k99_register_new_register_fields($user_id, $password="", $meta=array())  {

$custom_theme = $_POST['custom_theme']; //just in case ..
update_usermeta($user_id, 'user_custom_theme',$custom_theme);

}

এত কিছুর পরেও আপনি এই জাতীয় ব্যবহারকারীর নামটি পুনরুদ্ধার করতে পারেন:

get_user_meta($user_id, 'user_custom_theme', true);

দ্রষ্টব্য: এটি অন-দ্য ফ্লাইতে লেখা হয়েছিল। এটি বহু-ব্লগে যাচাই করা হয়নি, তবে একটি সহজ ডাব্লুপি ইনস্টল করে, এবং যদিও খুব বেশি পার্থক্য হওয়া উচিত নয় - তবুও এটি কোনও প্রোডাকশন ফাংশন নয়, এটি আপনাকে কেবল সঠিক পথে রাখার জন্য হয়েছিল। স্যানিটেশন এবং ভেরিয়েবলগুলি পরীক্ষা করা, ক্লিনিং কোড এবং ফরম মার্কআপ প্রয়োজন, পাশাপাশি ক্ষেত্রটি অন্যান্য ব্যবহারকারী সম্পর্কিত স্ক্রিনগুলিতে যুক্ত করা (ব্যবহারকারী তৈরি করুন, ব্যবহারকারী সম্পাদনা করুন, প্রোফাইল সম্পাদনা করুন ইত্যাদি) ..

দ্রষ্টব্য II: আপনি আপনার উওডেটে মাধ্যাকর্ষণ ফর্ম সম্পর্কে জিজ্ঞাসা করেছেন - এটির জন্য তাদের একটি অ্যাড-অন রয়েছে


আপনার সাহায্যের জন্য ধন্যবাদ. আমি একসাথে কিছু টুকরো টুকরো করতে পেরেছি এবং এটি প্রায় কাজ করে চলেছে। কেবল লুকানো ক্ষেত্রটি আটকে রাখতে এবং শেষ ফাংশনে মানটি প্রবেশ করতে সমস্যা হচ্ছে। আমার অগ্রগতি অন্তর্ভুক্ত করতে আমার প্রশ্ন আপডেট করেছে updated
অ্যান্ড্রু

আপনি আমার ফাংশন চেষ্টা করে? এটি কাজ করা উচিত ..
krembo99

আপনার উদাহরণের রেজিস্টার_ফর্ম হুক মাল্টিসাইটে কাজ করবে না। এতে রেডিও বোতাম যুক্ত করতে অন্য একটি হুক পাওয়া গেছে। এছাড়াও get_themes () হ্রাস করা হয়েছে এবং থিমের তথ্য পাওয়ার আরও ভাল উপায় খুঁজে পেয়েছি। পরিশেষে আমি মনে করি না যে থিমটির নাম ব্যবহারকারীর মেটা টেবিলের সাথে যুক্ত করা সবচেয়ে ভাল উপায়, থিমটির templateএবং stylesheetবিকল্পগুলির সারণীতে সঞ্চিত। এই বলে যে, আপনার কোডটি এখন পর্যন্ত একটি দুর্দান্ত সহায়তা হয়েছে, ধন্যবাদ।
অ্যান্ড্রু

রেজিস্টার_ফর্ম হুকটি মাল্টিসাইটে কাজ করবে (দেখুন কোডডেক্স কোডেক্স.ওয়ার্ডপ্রেস.আর / প্লাগইন_এপিআই / অ্যাকশন_রিফারেন্স / রেজিস্টার_ফর্ম )। আপনি আরও অনেক হুক খুঁজে পেতে পারেন, তবে আইএমএইচও ব্যবহার করার জন্য এটিই সঠিক হবে .. অন্যান্য মন্তব্য সম্পর্কে, আমি সত্যিই বিষয়টি বুঝতে পারি না, ব্যাখ্যা করার যত্ন নেই?
krembo99

মাধ্যাকর্ষণ ফর্ম ব্যবহারকারীর নিবন্ধকরণ প্লাগইন নোটের জন্য ধন্যবাদ। আমার কাছে ইতিমধ্যে সেই প্লাগইন রয়েছে তবে যখন ব্যবহারকারী কোনও সাইটের জন্য নিবন্ধন করে তখন আপনাকে কোনও থিম নির্বাচন করার অনুমতি দেয় না, সুতরাং আমার প্রশ্ন question
অ্যান্ড্রু

1

আমি জানি এটি এক ধরণের প্রতারণা, তবে আমি এই প্লাগইনটি ব্যবহার করি। এটি আপনাকে যে কোনও বিদ্যমান নেটওয়ার্ক সাইট অনুলিপি করতে দেয় এবং তারপরে নতুন ব্যবহারকারীরা সাইন আপ করলে এটি একটি টেম্পলেট হিসাবে উপলব্ধ করে। আপনি ইচ্ছেমতো নতুন ব্লগ টেম্পলেট তৈরি করতে পারেন। এগুলিতে সমস্ত সামগ্রী, প্লাগইনস, সেটিং ইত্যাদি ইত্যাদি থাকবে এবং নতুন সাইট / অ্যাকাউন্ট সেটআপ করার সময় ব্যবহারকারীরা একটি চয়ন করতে পারেন :)

http://premium.wpmudev.org/project/new-blog-template/


0

আপনার প্রশ্নের উত্তর এই ধরণের: আমরা এই সাইটে ' থিম স্যুইচ ' নামে একটি প্লাগইন রেখেছি: ফোকাস www..com এবং এটি এমন একটি সাইডবার স্থাপন করেছে যেখানে আপনি থিমগুলির তালিকা থেকে চয়ন করতে পারেন। এটি আপনাকে কোন থিমগুলি ব্যবহার করতে পারে এবং কুকিটির ডিফল্ট থিমটিতে ফিরতে কত দিন আগে শেষ হবে তা বেছে নিতে দেয়।


দুঃখিত আমি কোনও "থিম স্যুইচার" এর পরে নেই। আমি চাই যে ব্যবহারকারী কোনও থিম নির্বাচন করতে সক্ষম হবেন যখন তারা কোনও মাল্টিসাইট ইনস্টলেশনতে wp-signup.php ব্যবহার করে কোনও ব্লগের জন্য সাইন আপ করে।
অ্যান্ড্রু

আমি কেবল একটি 19 ডলার প্লাগইনে হোঁচট খেয়েছি যা ব্যবহারকারীদের নিবন্ধকরণের জন্য একটি থিম ইনস্টল করতে দেয়: प्रीমিয়াম.ডাব্লিউএমডেভ.আর / প্রকল্প / নতুন- ব্লগ- টেম্পলেট <= এটি দেখুন :)
Nohl

0

যদি এখনও প্রাসঙ্গিক হয় তবে সম্ভবত এটি অন্যদের অনুরূপ সমাধান অনুসন্ধান করতে সহায়তা করতে পারে

/**
 * Add custom field to registration form
 */
add_action( 'signup_blogform', 'aoc_show_addtional_fields' );
add_action( 'user_register', 'aoc_register_extra_fields' );

function aoc_show_addtional_fields() 
{
    $themes = wp_get_themes();
    echo '<label>Choose template for your site';
    foreach ($themes as $theme){
        echo '<img src="'.$theme->get_screenshot().'" width="240"/>';
        echo $theme->name . ' <input id="template" type="radio" tabindex="30" size="25" value="'.$theme->template.'" name="template" />';
    }
    echo '</label>';
}

function aoc_register_extra_fields ( $user_id, $password = "", $meta = array() ) {
    update_user_meta( $user_id, 'template', $_POST['template'] );
}

// The value submitted in our custom input field needs to be added to meta array as the user might not be created yet.
add_filter('add_signup_meta', 'aoc_append_extra_field_as_meta');
function aoc_append_extra_field_as_meta($meta) 
{
    if(isset($_REQUEST['template'])) {
        $meta['template'] = $_REQUEST['template'];
    }
    return $meta;
}

// Once the new site added by registered user is created and activated by user after email verification, update the template selected by user in database.
add_action('wpmu_new_blog', 'aoc_extra_field', 10, 6);
function aoc_extra_field($blog_id, $user_id, $domain, $path, $site_id, $meta) 
{
    update_blog_option($blog_id, 'template', $meta['template']);
    update_blog_option($blog_id, 'stylesheet', $meta['template']);
}

আমি যখন একটি অনুরূপ প্রয়োজন ছিল তখন আমি এখানে একটি ব্লগ পোস্ট ( http://artofcoding.in/select-theme- દરમિયાન-registering-wordpress-multisite-network/ ) লিখেছি । আশা করি এটি সহায়ক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.